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

Man*_*tha 3 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
        });

    });
}
Run Code Online (Sandbox Code Playgroud)

我知道我们总是可以以如下所示的WHERE IN方式识别 ids 的子句格式。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
            });

        });
    }
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 6

解决方案一:

一种方法是不使用占位符?:

'SELECT * FROM test WHERE col1 in (' + ids.join(',') + ')', [],...
Run Code Online (Sandbox Code Playgroud)

解决方案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], ...
Run Code Online (Sandbox Code Playgroud)