sql >> Databasteknik >  >> RDS >> PostgreSQL

Django. PostgreSQL. regexp_split_to_table fungerar inte

Omvänt snedstreck behandlas som meta-tecken av Django och tolkas inom dubbla citattecken. Så ett lager av E'\\s+') tas bort innan strängen kommer till PostgreSQL-servern, som kommer att se E'\s+') . Escape-strängen kommer att resultera i 's+' vilket i sin tur gör regexp_split_to_table() dela dina strängar vid valfritt antal s istället för icke-utskriftsutrymme, som teckenklassens förkortning \s står för i reguljära uttryck.

Dubbla dina omvända snedstreck i strängen för att få vad du tänkt dig:E'\\\\s+') :

"SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"

Som ett alternativ, för att undvika problem med den speciella betydelsen av omvänt snedstreck \ , kan du använda [[:space:]] för att beteckna samma teckenklass:

"SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"

Detaljer i kapitlet " Mönstermatchning" i manualen .



  1. Hur man konfigurerar en kluster-till-kluster-replikering för Percona XtraDB Cluster eller MariaDB Cluster

  2. Använda kryptering för att stärka PostgreSQL-databassäkerheten

  3. Ingen lämplig drivrutin hittades för jdbc:mysql/localhost:3306/world

  4. Varför är det bäst att lagra ett telefonnummer som en sträng kontra heltal?