2016-04-03 4 views
-3

私は、ユーザーがクエリから返すデータを指定できる機能を設計しようとしています。以下は、エンドユーザへの検索オプションです。契約にSQLiteクエリで列の値がANYであることを指定できますか?

  • プレーヤー(null以外のContractID)契約なし
  • プレーヤー(ヌルのContractID)
  • すべてのプレーヤー(nullまたはnull以外のContractID)

私がしたいですStringを受け取り、それをクエリに差し込んで目的のデータセットを返す関数を作成します。この設計では

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

、私はcontractFilter = "null"またはcontractFilter = "not null"に渡すことができます。 3番目の条件(nullまたはnullではない)のために渡すことができるものはありますか?何かのようなcontractFilter = "any"

+1

''ヌル 'は' any'を表します。 –

+0

@MDは "any"で "null"または "not null"のいずれかを返すことを意味します。私はその点を明確にするために質問を更新しました。 – NSouth

+4

その列を 'WHERE'節に含めないでください。具体的に結果を制約したい列だけを含めてください。 – CommonsWare

答えて

2

IMHOの場合、最善の解決策は、WHERE句に列を単に含めないことです。 like SQLiteQueryBuilderを使用している場合は、条件が「任意」の場合はappendWhere()コールをスキップしてください。あなたがこの問題を回避ハックしようとすることができます

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

しかし、これらは悪いことを実行することをまともなチャンスがあります。理想的には、SQLiteのクエリプランナーは「任意の」ケースを検出し、それを最適化しますが、そうでないと想定します。

関連する問題