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.