PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django. PostgreSQL. regexp_split_to_table funktioniert nicht

Der umgekehrte Schrägstrich wird von Django als Metazeichen behandelt und in doppelte Anführungszeichen gesetzt. Also eine Ebene von E'\\s+') wird entfernt, bevor die Zeichenfolge beim PostgreSQL-Server ankommt, der E'\s+') sehen wird . Der Escape-String ergibt 's+' was wiederum regexp_split_to_table() macht Teilen Sie Ihre Zeichenfolgen an einer beliebigen Anzahl von s auf anstelle von nicht druckbarem Leerzeichen, was die Kurzform der Zeichenklasse \s ist steht für in regulären Ausdrücken.

Verdoppeln Sie Ihre Backslashes in der Zeichenfolge, um das zu erhalten, was Sie beabsichtigt haben:E'\\\\s+') :

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

Alternativ, um Probleme mit der speziellen Bedeutung des Backslash \ zu vermeiden , können Sie [[:space:]] verwenden um dieselbe Zeichenklasse zu bezeichnen:

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

Details im Kapitel " Musterabgleich" im Handbuch .