部屋 - IN条件でクエリを選択しますか?
質問
SQLiteの
IN
条件を使用することはできますか?
データベースから項目のリストを選択しようとしているのですが、特定のカラムの値(この場合は
TEXT
カラム) の値がフィルター値のセットのいずれかに一致する場合、データベースからアイテムのリストを選択しようとしています。私の知る限り、これは SQL や SQLite では非常に簡単にできます。
IN
条件を
SELECT
ステートメント (
こちらをご覧ください
). しかし、Roomではうまくいかないようです。
このエラーが出続けています。
Error:(70, 25) error: no viable alternative at input 'SELECT * FROM Table WHERE column IN :filterValues'
(ここで、DAOへの入力は
@Query
-というアノテーションされたメソッドが
filterValues
)
現在、3種類の方法を試しています。
-
引数を
List<String>
-
引数を
String[]
-
そして最後に、引数を単に
String
として渡すこともできますが、フォーマット的には(value_1, value_2, ..., value_n)
特に最後のものは簡単に動作するはずです。
SELECT * FROM Table WHERE column IN (value_1, value_2, ..., value_n)
に直接変換され、これは手動で
SELECT
を手動で書き出すのと同じです。
どのように解決するのですか?
そこで、これを提出する準備をしているときに、以前調べたものをたくさん再確認したところ、私がなんとなく見落としていた、この質問が必要なくなるようなものを見つけました。
結論から言うと、この2つの選択肢はどちらも
-
として引数を渡すこと。
List<String>
-
引数を
String[]
は実行可能です(そして
String
をデータベースが表現できる任意の型、例えば
char
あるいは
int
) の構文を変更するだけです。
@Query
アノテーションの構文をこのように変更するだけです。
@Query("SELECT * FROM Table WHERE column IN :filterValues")
をこれに変更します。
@Query("SELECT * FROM Table WHERE column IN (:filterValues)")
簡単でしょう?
上の3番目の方法(引数を単に
String
として渡すが、書式は
(value_1, value_2, ..., value_n)
) は Room ではサポートされていないようですが、それは難しい方法なので、おそらく悪いことではありません。
私はすでにすべてをタイプアウトしていたので、他の人々が私と同じようにこの解決策を見つけるのに苦労し、この質問につまずく場合に備えて、質問を残しておこうと考えました。
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] jQuery select onChangeの値を取得する。
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] MySQL - SELECTクエリに基づくUPDATEクエリ
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。