SQLiteDatabase#rawQuery

馬鹿すぎる。

文字列で渡してるため、SQL 上でも文字列で扱ってみるみたい。 数値項目を検索する値をパラメータとして渡すとどうも検索できない。

https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery%28java.lang.String,%20java.lang.String[],%20android.os.CancellationSignal%29

その結果、算出項目が数値の場合、数値で比較ができないよ。

  • Android の SQLiteDatabase#rawQuery は文字列だけ扱っているので、どうも SQLite3 側の暗黙変換を期待してる感じ。
  • 通常のカラムの場合、項目型定義があるため、暗黙変換が SQlite3 上で行われる。
  • 対象項目が算出項目の場合、項目型が不明確なため、文字列で渡されている物をそのまま文字列として使用している。