sql - PostgreSQL 中的正则表达式替换

标签 sql regex postgresql replace

我有一个表,其中一个特定的字符串字段通常包含单引号和双引号的 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/

相关文章:

sql - 按两列值的计数过滤行

sql - Entity Framework 和迁移 - 如何在远程服务器上更新我的数据库?

名称文本字段的正则表达式 - 不允许使用数字并且不能留空

postgresql-client-13 : Depends: libpq5 (>= 13~beta2) but 12. 3-1.pgdg18.04+1 需要安装

sql - PostgreSQL:获取列的最小值及其相关城市

Mysql更新自连接,根据组增加列值

regex - 理解带有编号组的 sed 正则表达式

regex - Perl 正则表达式匹配忽略顺序

postgresql - Postgres View 在执行 SQL 时返回正确的行,但使用 REST 查询多次返回一行

sql - 如何限制从我的 tomcat 部署的 java 应用程序到 SQL Server 服务器的连接数?