【发布时间】:2020-02-17 15:46:45
【问题描述】:
我在使用 Postgresql 和 Node.js 时遇到了一个奇怪的问题。我想在我的查询中使用 LIKE 以及在搜索词的开头和结尾处使用 % 。在普通 SQL 中使用它没有问题:
这行得通:
SELECT * FROM vehicle WHERE module_imei LIKE '%searchterm%' OR custom_id LIKE '%searchterm%'
但是,在 Node 中使用它有点挑战。我还没有成功解决它: 这不起作用:
getVehiclesSearch: async function({ search }) {
let response;
try {
response = await pool.query(`SELECT * FROM vehicle WHERE module_imei LIKE %$1% OR custom_id LIKE %$1%`, [search]);
if(response) return response.rows;
} catch(error) {
// handle error
console.error(error);
// do not throw anything
}
},
执行上述操作会产生:“%”处或附近的语法错误
SELECT * FROM vehicle WHERE module_imei LIKE '%${$1}%' OR custom_id LIKE '%${$1}%
执行上述操作会产生:$1 未定义
SELECT * FROM vehicle WHERE module_imei LIKE '%$1%' OR custom_id LIKE '%$1%'
以上操作会产生:bind message提供1个参数,但是prepared statement ""需要0个
我很难将 % 考虑在内,这样它就不会导致查询崩溃。在尝试上述方法和其中的变量之后,就没有想法了。感谢您的热心帮助。
【问题讨论】:
标签: node.js postgresql