AndroidのSQLiteで部分一致している文字列を検索

Dec 12, 2013  

AndroidでSQLiteを使うようなアプリを作成していて、
「Android SQLite」でぐぐっても
基本的な「検索」「挿入」「更新」「削除」あたりの
ざっくりした方法しか見つけられないので、
補足的な感じで、部分一致している文字列の検索とか
検索条件の詳しい書き方の調べ方をメモっておきます。

どうにも改行が下手です。

【部分一致している文字列の検索】

SQLで言う(SQL分からないけど)「LIKE句」と
ワイルドカードである「%」を使うらしいです。
たとえば、

cursor = mydb.query(“my_table”, null, “name like ?”, new String[]{“%”+ “検索対象文字列” +“%”}, null, null, null);
ってしてやると、
nameっていうフィールドにある各文字列から
「検索対象文字列」を含む文字列を検索してくれる。
mydbっていうのはSQLiteDatabaseのインスタンスで
my_tableはテーブル名。

【検索条件の詳しい書き方の調べ方】
SQLiteってAndroidに独特なものではないから、
素直に「SQLite」でぐぐる。もしくは「SQL」。
すると

select * from customer where address = ‘東京’;
って感じの全然文法の違う文がでてくるけど、この検索条件はAndroid版の
cursor = mydb.query(“customer”, null, “address = ?”, new String[]{“東京”}, null, null, null);
と大体同じ意味。
というのも、内部での動作なんて調べてないから分からないけど、
たぶん、mydb.queryってしたときAndroid側で
select 第2引数 from 第1引数 where 第3引数と第4引数
という文を作ってSQLite側に投げてくれてるってイメージでいいと思います。
(第3引数の?に第4変数で指定した文字列の配列から順に文字列が入ります)
(Cのprintfに近いものを感じた……)
第5引数とかも指定すればgroup by句とかとして文に入ってくるはず。
それがわかってれば、
http://www.dbonline.jp/sqlite/select/
こういうSQLiteの解説サイトを読み替えできるので
欲しい情報は得やすくなると思います。

このエントリーをはてなブックマークに追加