SQLite文字列には他の文字列クエリが含まれています


111

どうすればよいですか?

たとえば、列が「猫、犬、鳥」で、列に猫が含まれている行を取得したい場合はどうすればよいですか。


3
一連のサンプルデータを使用して質問を編集します。何を求めているのか正確に判断するのは困難です。
p.campbell 2010

ハッピー100番目の投票。
ビショップ

回答:


195

LIKEの使用:

SELECT *
  FROM TABLE
 WHERE column LIKE '%cats%'  --case-insensitive

4
これは、検索している文字列が変数である場合や、などの特殊文字を含む場合には適していないことに注意してください%
サム

10
「猫」は、他のテーブルのフィールドである場合は、使用できる'%'||table2.field||'%'ような基準として
ステファン・Chの。

96

一方でLIKEこのような場合に適しており、より汎用的なソリューションを使用することですinstrエスケープする検索文字列の文字を必要としません、。注:instrSqlite 3.7.15以降で利用可能です

SELECT *
  FROM TABLE  
 WHERE instr(column, 'cats') > 0;

また、心に留めておくLIKE大文字で小文字を区別しないのに対し、instr大文字で敏感


13
つまり、minSdkVersionは21(5.0-Lollipop)でなければなりません
Maksim Turaev 2016年

1
@WilliamEntriken私自身のテストでinstr(...)は、少し高速です(0.32秒vs 0.34秒)。.timer onSQLiteでを使用して、実行時間を測定できます。
Arnie97
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.