Поддерживает ли библиотека sqlite3
для NodeJS параметры для WHERE IN
запросов?
У меня есть следующая небольшая программа.
const sqlite3 = require('sqlite3');
const db = new sqlite3.Database('./data/data.db');
const sql = `
SELECT * FROM accounts
WHERE
name IN ('Business Expense - Internet Service','RCSB Checking')`;
db.all( sql,
function getAccout(error, rows) {
console.log(error);
console.log(rows);
});
Программа "работает". Он запрашивает базу данных, и переменная rows
успешно заполняется данными из двух отдельных строк.
Однако я не хочу жестко закодированных значений. Я хочу параметризировать свои значения. Следующий код работает для этого.
const sql = `
SELECT * FROM accounts
WHERE
name = ? OR name = ?`;
db.all( sql,
['Business Expense - Internet Service','RCSB Checking'],
function getAccout(error, rows) {
console.log(error);
console.log(rows);
});
Однако я хочу, чтобы это работало с любым числом имен. я хочу параметризовать исходный запрос WHERE IN
. Тем не менее, следующая программа
const sql = `
SELECT * FROM accounts
WHERE
name IN (?)`;
db.all( sql,
[['Business Expense - Internet Service','RCSB Checking']],
function getAccout(error, rows) {
console.log(error);
console.log(rows);
});
не работает. Он работает без ошибок, но возвращает ноль строк. Я также попытался использовать объединенную строку в качестве параметра
const sql = `
SELECT * FROM accounts
WHERE
name IN (?)`;
db.all( sql,
["'Business Expense - Internet Service','RCSB Checking'"],
function getAccout(error, rows) {
console.log(error);
console.log(rows);
});
и это тоже не сработало.
Поддерживает ли библиотека sqlite3
параметризацию запросов WHERE IN
? Если так, какой синтаксис для этого? Если нет, есть ли общие способы решения этой проблемы в сообществе NodeJS?