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

How do I properly escape the single quote in node-postgres queries?

我需要执行以下查询:

db.query("SELECT * FROM items WHERE name ILIKE '%%';", [ query ])

node-postgres 似乎没有替换 </code> 参数,我不知道为什么。如果我将行更改为:</p>,我的查询将有效 <pre><code>db.query(`SELECT * FROM items WHERE name ILIKE '%${query}%';`)

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

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

否则,如何让node-postgres接受我的参数?我认为这与封装 % 符号有关。我一直 运行 遇到同样的问题。

您的占位符未被替换,因为 '%%' 是一个 SQL 字符串文字,它看起来恰好包含一个 </code> 占位符。您可以使用字符串操作在 JavaScript 中添加百分比:</p> <pre><code>db.query("SELECT * FROM items WHERE name ILIKE ", [ `%${query}%` ]) // ---------------------------------------------------^^^^^^^^^^^^

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

db.query("SELECT * FROM items WHERE name ILIKE '%' ||  || '%'", [ query ])
// --------------------------------------------^^^^^^----^^^^^^