首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确转义node-postgres查询中的单引号?

如何正确转义node-postgres查询中的单引号?
EN

Stack Overflow用户
提问于 2019-10-24 01:58:24
回答 1查看 861关注 0票数 1

我需要执行以下查询:

代码语言:javascript
复制
db.query("SELECT * FROM items WHERE name ILIKE '%$1%';", [ query ])

似乎node-postgres没有替换$1参数,我不知道为什么。如果我将行更改为:

代码语言:javascript
复制
db.query(`SELECT * FROM items WHERE name ILIKE '%${query}%';`)

但是现在,当查询包含单引号(')时,我遇到了问题。

我是否应该使用正则表达式替换所有的单引号(就像在query.replace(/'/g, "''")中一样)(我不认为这是推荐的)?

否则,如何让node-postgres接受我的参数?我认为这与封装%符号有关。我在这个问题上总是遇到同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-24 02:15:23

您的占位符不会被替换,因为'%$1%'是一个恰好包含$1占位符的SQL string文本。您可以使用字符串操作在JavaScript中添加百分比:

代码语言:javascript
复制
db.query("SELECT * FROM items WHERE name ILIKE $1", [ `%${query}%` ])
// ---------------------------------------------------^^^^^^^^^^^^

或者在SQL中使用SQL的字符串操作:

代码语言:javascript
复制
db.query("SELECT * FROM items WHERE name ILIKE '%' || $1 || '%'", [ query ])
// --------------------------------------------^^^^^^----^^^^^^
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58528565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档