Возможно, вы захотите использовать replace
:
SELECT REPLACE(text, '"', E'\\"') FROM aTable WHERE ...
Вам нужно будет экранировать свой escape-символ, чтобы получить буквальный обратный слеш (отсюда удвоенный обратный слеш) и использоватьПрефикс «E» в строке замены для получения правильного escape-синтаксиса .
UPDATE : И благодаря обычной строгости a_horse_with_no_name (что хорошо, кстати, у нас)решение, которое не требует дополнительного обратного слеша или нестандартного префикса «E»:
set standard_conforming_strings = on;
SELECT REPLACE(text, '"', '\"') FROM aTable WHERE ...
Опция standard_conforming_strings
указывает PostgreSQL использовать стандартный синтаксис для строк SQL:
Этот параметр определяет, будут ли обычные строковые литералы ('...') обрабатывать обратную косую черту буквально, как указано в стандарте SQL.
Это также повлияет на ваш \x5C
escape :
Если параметр конфигурации standard_conforming_strings выключен, то PostgreSQL распознает экранирование обратной косой черты как в обычной, так и в константе escape-строки.Это для обратной совместимости с историческим поведением, где всегда были распознаны обратные слэши.