我有一个表,其中一个特定的字符串字段通常包含单引号和双引号的 unicode:分别为 \u0027
和 \u0022
。事实证明,我其实更需要他们逃脱。我需要在它们前面放一个额外的 \
。
例如,我需要将\u0027Hello, world\u0027
更改为\\u0027Hello, world\\u0027
什么样的 SQL 可以对所有记录的表执行这种更新?
最佳答案
如果你真的需要这个,那么你可以使用这样的回复:
UPDATE table SET c = regexp_replace(c, '[^\\]\\(u\d{4})', '\\\\\1', 'g');
确保启用了 standard_conforming_strings 并将 regex_flavor 设置为高级。
SHOW standard_conforming_strings;
standard_conforming_strings
-----------------------------
on
(1 row)
替换字符串 '\\\\\1'
表示后面的两个反斜杠 \\
和 \1
表示第一个(报告)带括号的子表达式(即 'u'
与模式中的四位数字连接)。
关于sql - PostgreSQL 中的正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6221211/