如何正确转义 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 ])
// --------------------------------------------^^^^^^----^^^^^^
我需要执行以下查询:
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 ])
// --------------------------------------------^^^^^^----^^^^^^