sql >> Databáze >  >> RDS >> PostgreSQL

Django. PostgreSQL. regexp_split_to_table nefunguje

Zpětné lomítko Django považuje za metaznak a je interpretováno uvnitř dvojitých uvozovek. Takže jedna vrstva E'\\s+') se stáhne, než řetězec dorazí na server PostgreSQL, který uvidí E'\s+') . Řetězec escape bude mít za následek 's+' což zase vytvoří regexp_split_to_table() rozdělte své řetězce na libovolný počet s místo netisknutelného prostoru, což je zkratka třídy znaků \s znamená v regulárních výrazech.

Zdvojnásobte zpětná lomítka v řetězci, abyste získali to, co jste zamýšleli:E'\\\\s+') :

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

Alternativně, abyste se vyhnuli problémům se speciálním významem zpětného lomítka \ , můžete použít [[:space:]] k označení stejné třídy znaků:

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

Podrobnosti v kapitole " Pattern Matching“ v příručce .



  1. ORDER BY Color s Hex kódem jako kritériem v MySQL

  2. Porozumění připraveným prohlášením CHOP a závazným parametrům

  3. Vytvořte jedinečné omezení s prázdnými sloupci

  4. Oracle PL/SQL získat IP server v4?