Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我可以在SQLite查询中指定列具有任何值吗?_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android 我可以在SQLite查询中指定列具有任何值吗?

Android 我可以在SQLite查询中指定列具有任何值吗?,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在尝试设计一个功能,用户可以指定从查询中返回的数据。以下是最终用户的搜索选项 合约非空的玩家 没有合同的球员合同无效 所有玩家空或非空收缩 我想创建一个函数,它可以接受一个字符串并将其插入查询以返回所需的数据集 public ArrayList<Player> getPlayers(String contractFilter) { String query = "... WHERE player.ContractId is " + contractFilter; } 通

我正在尝试设计一个功能,用户可以指定从查询中返回的数据。以下是最终用户的搜索选项

合约非空的玩家 没有合同的球员合同无效 所有玩家空或非空收缩 我想创建一个函数,它可以接受一个字符串并将其插入查询以返回所需的数据集

public ArrayList<Player> getPlayers(String contractFilter) {
    String query = "... WHERE player.ContractId is " + contractFilter;
}

通过这种设计,我可以传入contractFilter=null或contractFilter=notnull。对于第三个条件null或non-null,有什么可以传递的吗?类似于contractFilter=any?

IMHO,最好的解决方案就是不要在WHERE子句中包含该列。如果您使用了一些东西,只要在条件存在时跳过appendWhere调用即可

您可以尝试绕过此问题:

使用列名称为NULL或列名称不为NULL 使用列名称,如“%”
然而,它们的表现很有可能会更糟。理想情况下,SQLite的查询计划器将检测任何情况并对其进行优化,但我不会假设情况如此。

我认为not null表示any@MD通过any,我的意思是我想返回null或notnull。我更新了我的问题以澄清这一点。不要在WHERE子句中包含该列。只包括您特别希望约束结果的列。@Commonware,我知道我不能按该列进行筛选。我的问题更多的是关于是否存在允许我为列指定任意筛选器的语法。如果没有,我当然可以在第3种情况下添加更多的逻辑来修改查询。我的问题更多的是关于是否存在允许我为列指定任意筛选器的语法-您可以尝试使用columnname is NULL或columnname is not NULL。但是,除非SQLite专门检测到这一点并将其转换为no-op,否则我认为它的性能会比根本不在查询中包含该列更差。类似地,由于SQLite只是松散类型的,所以可以尝试类似“%”的方法,尽管性能可能再次受到影响。