Der backslash hat in (standard) SQL keine Bedeutung und in allen modernen Postgres Versionen ist das per default auch so (es gibt eine Option “standard_conforming_strings” die das nicht-Standard Verhalten erlaubt, ist aber nicht zu empfehlen das einzuschalten).
Warum beachtest Du die Hinweise nicht, die PG schon selber gab?
Hint: das, was nach Hint steht
test=*# select 'das ist\ndie zweite zeile';
?column?
---------------------------
das ist\ndie zweite zeile
(1 row)
test=*# select E'das ist\ndie zweite zeile';
?column?
------------------
das ist +
die zweite zeile
(1 row)
test=*# select replace(E'das ist\ndie zweite zeile',E'\n','');
replace
-------------------------
das istdie zweite zeile
(1 row)
Das heisst Du hast den Parameter “standard_conforming_strings” auf “false” stehen.
Ich würde dringend empfehlen diesen auf “true” zu setzen und dann den Backslash als “escape” Zeichen in SQL zu vergessen.
Die aktuellen Versionen haben das alle auf “true” stehen, und nachdem 8.4 bald zum alten Eisen gehört, wird das die anstehende Migration deutlich vereinfachen.
Hallo castorp,
danke für den Hinweis.
Aber die DB gehört zu einer Fremdanwendung. Da diese natürlich für mich als BlackBox arbeitet, möchte ich ungern Einstellungen ändern.
Mein Trigger funktioniert erst mal fehler- und kommentarfrei und PG 8.4 ist im Moment noch die empfohle Version der “Fremdfima”.