You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何查询以单引号结尾的字符串记录?

PostgreSQL查询以单引号结尾字符串的正确实现

原有写法的问题

你使用的select * from cust where nam like '%'''语法上符合PostgreSQL规则:SQL标准用连续两个单引号表示字符串内的一个单引号常量,这段代码解析出的匹配模式为%',逻辑上对应以单引号结尾的字符串。但该写法极易因为单引号计数错误出现解析偏差,也可能受客户端转义配置影响导致匹配失效。

推荐解决方案

  • 方案1:使用right()函数直接判断末尾字符,逻辑直观兼容性最好

    SELECT * FROM cust WHERE right(nam, 1) = '''';
    

    原理:right(字段名, 长度)会提取字段末尾指定长度的子串,直接和单引号做等值匹配,不需要处理LIKE的模式匹配规则,完全不会出现转义计数错误。

  • 方案2:使用PostgreSQL美元符引用规避单引号转义问题

    SELECT * FROM cust WHERE nam LIKE $$%'$$;
    

    原理:美元符引用是PostgreSQL原生支持的字符串常量写法,$$包裹的内容不需要做任何单引号转义,直接写%'即可得到需要的匹配模式,彻底避免单引号计数混乱。

你可以先插入测试数据验证效果:

INSERT INTO cust (nam) VALUES ('test'''), ('normal_str');

上述两种查询都会正确返回nam值为test'的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:27:01