sql >> Base de Datos >  >> RDS >> PostgreSQL

Django. PostgresSQL. regexp_split_to_table no funciona

Django trata la barra invertida como un metacarácter y se interpreta entre comillas dobles. Entonces, una capa de E'\\s+') se elimina antes de que la cadena llegue al servidor PostgreSQL, que verá E'\s+') . La cadena de escape dará como resultado 's+' que a su vez hará regexp_split_to_table() divide tus cadenas en cualquier número de s en lugar de un espacio que no se puede imprimir, que la clase de caracteres abreviada \s significa en expresiones regulares.

Doble sus barras invertidas en la cadena para obtener lo que pretendía:E'\\\\s+') :

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

Como alternativa, para evitar problemas con el significado especial de la barra invertida \ , puede usar [[:space:]] para denotar la misma clase de carácter:

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

Detalles en el capítulo " Coincidencia de patrones" en el manual .