Javascript SQLite:带有WHERE IN子句的SELECT语句

时间:2015-12-18 19:29:43

标签: javascript sql sqlite

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
            });

        });
    }

1 个答案:

答案 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], ...