Обратная косая черта трактуется Джанго как метасимвол и интерпретируется внутри двойных кавычек.Таким образом, один слой E'\\s+')
удаляется до того, как строка поступит на сервер PostgreSQL, который увидит E'\s+')
.Экранирующая строка приведет к 's+'
, что, в свою очередь, заставит regexp_split_to_table()
разбить ваши строки на любое число s
вместо непечатного пробела, который сокращенный класс символов \s
обозначает в регулярных выражениях.
Удвойте обратную косую черту в строке, чтобы получить то, что вы хотели: E'\\\\s+')
:
"SELECT regexp_split_to_table(field_name, E'\\\\s+') FROM mytable LIMIT 20"
В качестве альтернативы, чтобы избежать проблем со специальным значением обратной косой черты \
, вы можете использовать[[:space:]]
для обозначения того же класса символов:
"SELECT regexp_split_to_table(field_name, '[[:space:]]+') FROM mytable LIMIT 20"
Подробности в главе «Сопоставление с образцом» в руководстве .