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

使用pg的Pool查询PostgreSQL时含引号的LIKE模糊查询报错如何解决

pg中带LIKE的参数化查询报错解决方案

错误原因

pg的参数化查询规则为:仅未被单引号包裹的$n格式占位符会被识别为待替换参数。你的写法将$1放在'%$1%'的单引号内,驱动不会处理该占位符,整个%$1%会被直接提交到PostgreSQL,被解析为字段名触发不存在报错。

解决方法

方案1(更推荐):通配符拼接在参数侧

将通配符和查询字符串在传入参数阶段拼接,SQL语句中只保留独立的占位符即可:

pool.query("SELECT * FROM database WHERE field LIKE $1", [`%${str}%`], (...) => {
   // 业务逻辑
});

方案2:SQL内使用字符串拼接运算符

利用PostgreSQL原生的||字符串拼接运算符,在SQL语句内完成通配符和参数的拼接:

pool.query("SELECT * FROM database WHERE field LIKE '%' || $1 || '%'", [ str ], (...) => {
   // 业务逻辑
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:02