如何在sqlite3的nodejs版本中使用带参数的通配符?代码:
let db = new sqlite.Database(...)
const param = 'x'
db.all('select * from mytable where name like "%?%"', [param], (err, rows) => {
...
这将导致
SQLITE_RANGE:列索引超出范围
有人建议像这样将通配符添加到查询字符串中:
const param = '%' + 'x' + '%'
但这似乎导致从字面上搜索“%x%”之类的名称,而不是使用通配符。我知道我要运行的查询是正确的,因为它在sqlite3 cli中返回了预期的行。如何在javascript中实现同一目的?
答案 0 :(得分:1)
您可以在参数内使用通配符:
let db = new sqlite.Database(...)
const param = {$name: '%Alice%'}
db.all('select * from mytable where name like $name', param, (err, rows) => {
答案 1 :(得分:1)
您需要在参数中包含%%并删除双引号:
const search = 'x';
const param = '%' + search + '%';
db.all('select * from mytable where name like ?', [param], (err, rows) => {