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 .