Node.js sqlite3中的通配符

时间:2019-12-07 12:49:06

标签: node.js sqlite

如何在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中实现同一目的?

2 个答案:

答案 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) => {