我有一个表,其中一个特定的字符串字段通常包含unicode,其中的单引号和双引号分别为\u0027
和\u0022
。所以事实证明,我更需要他们逃走。我需要在他们面前多放一个\
。
例如,我需要将\u0027Hello, world\u0027
更改为\\u0027Hello, world\\u0027
什么样的SQL可以对表中的所有记录执行这种更新?
最佳答案
如果你真的需要这个,那么你可以使用这样的RE:
UPDATE table SET c = regexp_replace(c, '[^\\]\\(u\d{4})', '\\\\\1', 'g');
确保启用了标准的符合规则的字符串,并将regex风格设置为高级。
SHOW standard_conforming_strings;
standard_conforming_strings
-----------------------------
on
(1 row)
替换字符串
'\\\\\1'
表示后面的两个反斜杠\\
和\1
表示第一个(报告)带圆括号的子表达式(即,'u'
与模式中的四位数字连接)。