SQLite like()
fungsi memungkinkan Anda untuk membandingkan string dengan pola yang diberikan. Anda juga dapat menentukan karakter pelarian jika diperlukan.
Anda dapat menggunakan like()
berfungsi sebagai alternatif dari LIKE
operator (yang memungkinkan Anda menjalankan Y LIKE X [ESCAPE Z]
ekspresi).
Sintaks
Anda dapat menggunakan salah satu dari berikut ini:
like(X,Y)
like(X,Y,Z)
X
adalah polanyaY
adalah stringZ
adalah karakter pelarian opsional
Contoh Dasar
Ambil tabel berikut:
CatId CatName ---------- ---------- 1 Brush 2 Flutter 3 100%Fluff 4 100$Fluff
Kita dapat menjalankan kode berikut untuk mengembalikan semua baris di mana nama kucing dimulai dengan huruf F:
SELECT * FROM Cats
WHERE like('F%', CatName);
Hasil:
CatId CatName ---------- ---------- 3 Flutter
Dalam contoh ini, saya menggunakan %
karakter wildcard untuk menunjukkan sejumlah karakter yang dapat diikuti (termasuk karakter nol), dan karakter tersebut dapat berupa karakter apa pun.
Karakter Garis Bawah (_)
Berikut adalah contoh yang menggunakan garis bawah (_
) karakter. Karakter wildcard ini sama persis dengan satu karakter – tidak lebih, dan tidak kurang.
SELECT * FROM Cats
WHERE like('Br_sh', CatName);
Hasil:
CatId CatName ---------- ---------- 1 Brush
Seperti yang disebutkan, itu hanya cocok dengan satu karakter. Jadi, berdasarkan data saya, saya tidak dapat melakukan hal berikut dan mengharapkan kecocokan.
SELECT * FROM Cats
WHERE like('Br_', CatName);
Hasil:
(Ini sengaja dikosongkan karena tidak ada hasil).
Karakter Melarikan Diri
Anda juga dapat keluar dari karakter jika diperlukan. Untuk melakukannya, tambahkan karakter escape sebagai parameter ketiga (dan tambahkan juga sebelum karakter yang ingin Anda escape).
SELECT * FROM Cats
WHERE like('100\%F%', CatName, '\');
Hasil:
CatId CatName ---------- ---------- 3 100%Fluff
Dalam hal ini saya lolos dari tanda persentase (%
). Saya melakukan ini karena saya sedang mencari kucing yang memiliki tanda persentase sebenarnya dalam nama mereka. Sebenarnya, dalam kasus ini saya sedang mencari nama kucing yang sangat spesifik – nama yang dimulai dengan 100%F .
Jika saya tidak lolos, itu akan digunakan sebagai wildcard, dan hasilnya akan berbeda.
Inilah yang saya dapatkan ketika saya menghapus karakter melarikan diri.
SELECT * FROM Cats
WHERE like('100%F%', CatName);
Hasil:
CatId CatName ---------- ---------- 3 100%Fluff 4 100$Fluff
Mengembalikan Nilai Boolean
Anda dapat menggunakan like()
berfungsi untuk mengembalikan 0 atau 1 , tergantung apakah ada yang cocok atau tidak.
Ini bisa berguna jika Anda perlu mengembalikan semua baris, tetapi juga dengan tanda yang menunjukkan apakah mereka cocok dengan kriteria Anda atau tidak.
Ini contohnya.
SELECT
CatName,
like('F%', CatName)
FROM Cats;
Hasil:
CatName CatName LIKE 'F%' ---------- ------------------ Brush 0 Flutter 1 100%Fluff 0 100$Fluff 0
Dalam hal ini, hanya satu baris yang cocok dengan kriteria, tetapi kami masih dapat melihat semua baris lainnya.
Sensitivitas Huruf Besar
Secara default, SQLite like()
fungsi 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. Artikel itu ditulis untuk LIKE
operator, tetapi juga berlaku untuk like()
fungsi.