You need to enable JavaScript to run this app. Postgres模式匹配替换列拼写错误时正则匹配失效如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Postgres模式匹配替换列拼写错误时正则匹配失效如何解决

问题原因
  • 核心问题是GMC对应的正则规则配置错误:你写的规则^GMC.+中,+量词要求匹配的字符至少出现1次,也就是说这个规则只能匹配以GMC开头、且后面至少还有1个其他字符的字符串,无法匹配纯GMC本身,所以表A里的GMC记录没有命中规则。
  • 你写的UPDATE语句里name ~* any(array[B.rule])属于冗余写法,不过这个不是导致匹配失败的原因,只是没必要单独把单条rule转为数组再做any匹配。
解决方案
  1. 先修正表B的正则规则:把^GMC.+调整为^GMC.*即可,*量词允许前面的匹配项出现0次及以上,既能匹配纯GMC,也能匹配GMC 123这类以GMC开头的其他字符串;如果只需要严格匹配纯GMC,直接把规则改成^GMC$即可。
  2. 可以优化更新语句,避免冗余写法,同时如果存在一条记录匹配多条规则的情况,建议加排序逻辑指定优先级,避免结果随机,基础示例语句如下:
UPDATE A 
SET renamed_name = B.correct_name 
FROM B 
WHERE A.name ~* B.rule;

如果要指定规则优先级,比如优先匹配更长、更精确的规则,可以用带排序的子查询写法,避免多规则匹配时结果不确定:

UPDATE A
SET renamed_name = (
    SELECT B.correct_name
    FROM B
    WHERE A.name ~* B.rule
    ORDER BY length(B.rule) DESC
    LIMIT 1
)
WHERE EXISTS (
    SELECT 1 FROM B WHERE A.name ~* B.rule
);

内容的提问来源于stack exchange,提问作者Priya Sooraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 16:00:00