sql >> Database >  >> RDS >> PostgreSQL

Django. PostgreSQL. regexp_split_to_table werkt niet

De backslash wordt door Django behandeld als meta-teken en wordt geïnterpreteerd tussen dubbele aanhalingstekens. Dus één laag E'\\s+') wordt verwijderd voordat de string aankomt op de PostgreSQL-server, die E'\s+') zal zien . De escape-tekenreeks resulteert in 's+' wat op zijn beurt regexp_split_to_table() . zal maken splits je strings op een willekeurig aantal s in plaats van niet-afdrukbare spatie, die de tekenklasse wordt afgekort \s staat voor in reguliere expressies.

Verdubbel je backslashes in de string om te krijgen wat je bedoelde:E'\\\\s+') :

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

Als alternatief, om problemen met de speciale betekenis van de backslash \ . te voorkomen , kunt u [[:space:]] . gebruiken om dezelfde tekenklasse aan te duiden:

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

Details in het hoofdstuk " Pattern Matching" in de handleiding .



  1. Hoe maak je dummy variabele kolommen voor duizenden categorieën in Google BigQuery?

  2. DB-ontwerp:ledentafel apart of alles in één tafel?

  3. nummers opslaan als varchar

  4. Hoe kom ik erachter of een upsert een update was met PostgreSQL 9.5+ UPSERT?