在Javascript
SQLite
中,有更好的方法可以使用SELECT
子句执行WHERE IN
语句吗?我们以下面的查询为例:
var ids = [1, 5, 10];
function getBranches (ids) {
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM Branch WHERE id in ?', [ids], function(tx,results){
// process results
});
});
}
我知道我们可以始终以WHERE IN
识别它的方式格式化SQL
子句,如下所示。但我想知道是否有一种很好的方法来实现这一要求。
function getBranches (ids) {
db.transaction(function(tx) {
var idClause = ' id in (\"' + ids.join("\",\"") + '\");';
tx.executeSql('SELECT * FROM Branch WHERE ' + idClause, [], function(tx,results){
// process results
});
});
}
答案 0 :(得分:1)
解决方案1:
一种方法是不使用占位符?
:
'SELECT * FROM test WHERE col1 in (' + ids.join(',') + ')', [],...
解决方案2:
另一种方法是在您的示例中执行花哨的预准备语句样式,您需要在其中放置等于参数数量的确切数量?
。
var ids = [1, 5, 10];
var placeHolders = new Array(ids.length).fill('?').join(',');
var query = 'SELECT * FROM Branch WHERE id in ('+ placeHolders + ')';
tx.executeSql(query, [ids], ...