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

时间:2016-04-03 15:42:32

标签: android sqlite android-sqlite

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

  • 有合同的玩家(非null contractId)
  • 没有合同的玩家(null contractId)
  • 所有玩家(null或非null contractId)

我想创建一个可以接受String并将其插入查询以返回所需数据集的函数。

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

通过这种设计,我可以传递contractFilter = "null"contractFilter = "not null"我可以传入第三种情况(null或非null)吗?类似contractFilter = "any" 的内容?

1 个答案:

答案 0 :(得分:2)

恕我直言,最好的解决方案是不要在WHERE子句中包含该列。如果您使用like SQLiteQueryBuilder,只需在条件为&#34;任何&#34;时跳过appendWhere()来电。

你可以尝试解决这个问题:

  • 使用column_name IS NULL OR column_name IS NOT NULL
  • 使用column_name LIKE '%'

然而,这些表现会更糟糕。理想情况下,SQLite的查询规划器将检测&#34; any&#34;案例并对其进行优化,但我不认为是这样的。