String SQLite berisi kueri string lain


111

Bagaimana saya melakukan ini?

Misalnya, jika kolom saya adalah "kucing, anjing, burung" dan saya ingin mendapatkan baris di mana kolom berisi kucing?


3
edit pertanyaan Anda dengan sekumpulan contoh data. Sulit untuk menentukan dengan tepat apa yang Anda minta.
Campbell

Selamat memilih ke-100.
uskup

Jawaban:


195

Menggunakan LIKE:

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

4
Perlu diingat bahwa ini tidak cocok jika string yang Anda cari adalah variabel atau berisi karakter khusus seperti %.
Sam

10
jika "kucing" adalah bidang dari tabel lain, Anda dapat menggunakan '%'||table2.field||'%'kriteria sejenis
Stéphane Ch.

96

Meskipun LIKEcocok untuk kasus ini, solusi tujuan yang lebih umum adalah menggunakan instr, yang tidak memerlukan karakter dalam string pencarian untuk di-escape. Catatan: instrtersedia mulai dari Sqlite 3.7.15 .

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

Juga, perlu diingat bahwa LIKEadalah kasus- sensitif , sedangkan instradalah case sensitif .


13
Yang berarti bahwa minSdkVersion Anda harus 21 (5.0-Lollipop)
Maksim Turaev

1
@WilliamEntriken Dalam pengujian saya sendiri, instr(...)ini sedikit lebih cepat (0,32 detik vs 0,34). Anda dapat menggunakan .timer onSQLite untuk mengukur waktu eksekusi.
Arnie97
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.