Di SQLite, Anda dapat menggunakan LIKE
operator dalam kueri Anda untuk melakukan perbandingan pencocokan pola.
Misalnya, Anda dapat menambahkannya ke WHERE
klausa untuk mengembalikan hanya baris yang cocok dengan pola tertentu.
Namun, menambahkannya ke WHERE
klausa bukan satu-satunya cara Anda dapat menggunakan LIKE
operator. Anda juga dapat menggunakannya untuk mengembalikan nilai boolean.
Contoh Dasar
Berikut adalah contoh dasar yang menggunakan LIKE
operator di WHERE
klausa.
SELECT * FROM Artist
WHERE Name LIKE 'Black%';
Hasil:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 169 Black Eyed Peas
Dalam hal ini saya ingin mengembalikan semua artis yang namanya dimulai dengan Hitam .
Tanda persentase adalah karakter wildcard yang cocok dengan nol atau lebih karakter apa pun (termasuk spasi).
Tanpa Wildcard
Jika saya tidak menggunakan karakter wildcard, saya tidak akan mendapatkan hasil apa pun.
Ini contoh yang saya maksud:
SELECT * FROM Artist
WHERE Name LIKE 'Black';
Hasil:
(Itu sengaja dikosongkan, karena tidak ada hasil.)
Beberapa Wildcard
Anda dapat menggunakan lebih dari satu karakter wildcard jika diperlukan. Dalam contoh ini saya menambahkan satu lagi ke depan pola saya.
SELECT * FROM Artist
WHERE Name LIKE '%Black%';
Hasil:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 38 Banda Black Rio 137 The Black Crowes 169 Black Eyed Peas
Ini menghasilkan lebih banyak baris yang dikembalikan, karena ada dua baris yang memiliki Hitam atas nama mereka, tetapi tidak di awal.
Wildcard Garis Bawah (_)
Anda juga memiliki opsi untuk menggunakan garis bawah (_
) karakter pengganti.
Karakter wildcard ini cocok dengan tepat satu karakter (karakter apa saja).
Perhatikan tabel berikut yang disebut Kucing :
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
Ya, beberapa kucing memiliki nama yang aneh, tetapi mereka akan berguna.
Berikut adalah contoh penggunaan karakter pengganti garis bawah dalam kueri terhadap tabel tersebut.
SELECT * FROM Cats
WHERE CatName LIKE 'Br_sh';
Hasil:
CatId CatName ---------- ---------- 1 Brush 2 Brash
Perhatikan bahwa kucing bernama Broosh tidak termasuk.
Untuk memasukkan Broosh , saya perlu menggunakan dua garis bawah:
SELECT * FROM Cats
WHERE CatName LIKE 'Br__sh';
Hasil:
CatId CatName ---------- ---------- 3 Broosh
Namun, ini tidak termasuk dua kucing lainnya.
Saya selalu bisa menggunakan tanda persentase untuk memasukkan kucing lain.
SELECT * FROM Cats
WHERE CatName LIKE 'Br%sh';
Hasil:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh
Meskipun, perlu diingat bahwa ini juga akan mengembalikan nama dengan lebih dari dua karakter di antara Br dan dia .
Klausul ESCAPE
Terkadang data Anda mungkin benar-benar menyertakan karakter wildcard. Dengan kata lain, data berisi garis bawah atau tanda persentase.
Ini bisa menjadi masalah jika Anda benar-benar mencoba mencocokkan tanda garis bawah atau persentase sebagai karakter literal dan bukan sebagai karakter pengganti.
Di tabel kucing saya, Anda akan melihat bahwa seekor kucing memiliki tanda persentase dalam namanya. Kucing lain memiliki nama yang hampir sama persis, kecuali bahwa, alih-alih tanda persentase, itu adalah tanda dolar.
Ini tabelnya lagi:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
Jika saya ingin mengembalikan hanya kucing yang namanya dimulai dengan 100%F maka saya harus melarikan diri dari % . Jika saya tidak lolos dari ini, maka saya akan mendapatkan hasil yang tidak diinginkan.
Inilah yang terjadi jika saya menjalankan kueri tanpa lolos dari tanda persentase.
SELECT * FROM Cats
WHERE CatName LIKE '100%F';
Hasil:
CatId CatName ---------- ---------- 4 100%Fluff 5 100$Fluff
Dalam hal ini tanda persentase juga cocok dengan tanda dolar, karena tanda persentase diperlakukan sebagai karakter wildcard.
Untuk memastikan bahwa tanda persentase tidak diperlakukan sebagai karakter wildcard, kita dapat menggunakan ESCAPE
klausa.
SELECT * FROM Cats
WHERE CatName LIKE '100\%%F' ESCAPE '\';
Hasil:
CatId CatName ---------- ---------- 4 100%Fluff
Mengembalikan Nilai Boolean
Anda dapat menggunakan LIKE
operator untuk mengembalikan 0 atau 1 , tergantung apakah ada yang cocok atau tidak.
Ini contohnya.
SELECT
CatName,
CatName LIKE 'Br%'
FROM Cats;
Hasil:
CatName CatName LIKE 'Br%' ---------- ------------------ Brush 1 Brash 1 Broosh 1 100%Fluff 0 100$Fluff 0
Dalam hal ini, tiga baris pertama cocok dengan kriteria, dan dua baris terakhir tidak.
Sensitivitas Huruf Besar
Secara default, SQLite LIKE
operator tidak peka huruf besar/kecil untuk karakter ASCII. Ini berarti akan cocok dengan karakter huruf besar dan kecil, terlepas dari huruf besar apa yang Anda gunakan dalam pola Anda.
Anda dapat menggunakan case_sensitive_like Pernyataan PRAGMA untuk melakukan pencocokan peka huruf besar/kecil dalam rentang ASCII.
Lihat Cara Membuat Operator LIKE SQLite Case-Sensitive untuk contoh.
Fungsi Suka()
Cara alternatif untuk melakukannya adalah dengan menggunakan like()
fungsi.
Fungsi ini melakukan hal yang persis sama dengan LIKE
operator, kecuali bahwa Anda perlu menggunakan sintaks yang sedikit berbeda.
Semua contoh di atas dapat ditulis ulang untuk menggunakan like()
berfungsi jika diperlukan.