我需要执行以下查询:
db.query("SELECT * FROM items WHERE name ILIKE '%$1%';", [ query ])似乎node-postgres没有替换$1参数,我不知道为什么。如果我将行更改为:
db.query(`SELECT * FROM items WHERE name ILIKE '%${query}%';`)但是现在,当查询包含单引号(')时,我遇到了问题。
我是否应该使用正则表达式替换所有的单引号(就像在query.replace(/'/g, "''")中一样)(我不认为这是推荐的)?
否则,如何让node-postgres接受我的参数?我认为这与封装%符号有关。我在这个问题上总是遇到同样的问题。
发布于 2019-10-24 02:15:23
您的占位符不会被替换,因为'%$1%'是一个恰好包含$1占位符的SQL string文本。您可以使用字符串操作在JavaScript中添加百分比:
db.query("SELECT * FROM items WHERE name ILIKE $1", [ `%${query}%` ])
// ---------------------------------------------------^^^^^^^^^^^^或者在SQL中使用SQL的字符串操作:
db.query("SELECT * FROM items WHERE name ILIKE '%' || $1 || '%'", [ query ])
// --------------------------------------------^^^^^^----^^^^^^https://stackoverflow.com/questions/58528565
复制相似问题