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.
Namun, ada teknik yang dapat Anda gunakan untuk membuatnya peka huruf besar/kecil.
SQLite memiliki pernyataan PRAGMA yang disebut case_sensitive_like , yang dirancang khusus untuk membuat LIKE
operator case-sensitive untuk karakter ASCII.
Alasan saya menentukan “karakter ASCII” adalah karena, LIKE
operator peka huruf besar/kecil secara default untuk karakter unicode yang berada di luar rentang ASCII.
Oleh karena itu, jika Anda membutuhkan LIKE
operator untuk peka terhadap huruf besar/kecil dalam rentang ASCII, case_sensitive_like Pernyataan PRAGMA bisa menjadi apa yang Anda cari.
Ini juga berlaku untuk like()
fungsi, yang bekerja persis sama dengan LIKE
operator.
Mengaktifkan/Menonaktifkan Sensitivitas Huruf Besar
Anda dapat menggunakan salah satu nilai boolean berikut untuk mengaktifkan sensitivitas huruf besar-kecil:
1
on
true
yes
Anda dapat menggunakan salah satu nilai boolean berikut untuk menonaktifkan sensitivitas huruf besar/kecil:
0
off
false
no
Argumen dapat berupa tanda kurung atau dapat dipisahkan dari nama pragma dengan tanda sama dengan.
Argumen kata kunci opsional dapat muncul dalam tanda kutip.
Contoh Tidak Peka Huruf Besar-kecil
Pertama, mari kita lihat apa yang terjadi jika kita tidak menggunakan case_sensitive_like Pernyataan PRAGMA.
SELECT
'a' LIKE 'A',
'æ' LIKE 'Æ';
Hasil:
'a' LIKE 'A' 'æ' LIKE 'Æ' ------------ ------------ 1 0
Dalam hal ini, kolom pertama tidak peka huruf besar/kecil – huruf besar A cocok dengan huruf kecil a .
Dan inilah kueri terhadap tabel database.
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, kami mendapatkan kecocokan melawan semua kucing yang namanya dimulai dengan Br , meskipun kriteria kami menggunakan huruf kecil b .
Contoh Peka Huruf Besar-kecil
Sekarang mari kita lihat apa yang terjadi ketika kita menggunakan case_sensitive_like Pernyataan PRAGMA untuk mengaktifkan sensitivitas huruf besar-kecil dalam rentang ASCII.
PRAGMA case_sensitive_like = 1;
SELECT
'a' LIKE 'A',
'æ' LIKE 'Æ';
Hasil:
'a' LIKE 'A' 'æ' LIKE 'Æ' ------------ ------------ 0 0
Jadi kali ini huruf besar A apakah tidak cocok dengan huruf kecil a .
Dan inilah contoh database setelah mengaktifkan case-sensitivity.
SELECT
CatName,
CatName LIKE 'br%'
FROM Cats;
Hasil:
CatName CatName LIKE 'br%' ---------- ------------------ Brush 0 Brash 0 Broosh 0 100%Fluff 0 100$Fluff 0
Perhatikan bahwa saya tidak perlu menjalankan pernyataan PRAGMA lagi. Pengaturan tetap berlaku untuk koneksi saya sampai saya mengubahnya.
Nonaktifkan Sensitivitas Huruf Besar
Berikut ini contoh menonaktifkan sensitivitas huruf besar-kecil dan menjalankan kueri lagi.
PRAGMA case_sensitive_like = 0;
SELECT
CatName,
CatName LIKE 'br%'
FROM Cats;
Hasil:
CatName CatName LIKE 'br%' ---------- ------------------ Brush 1 Brash 1 Broosh 1 100%Fluff 0 100$Fluff 0
Fungsi Suka()
Seperti disebutkan, case_sensitive_like Pernyataan PRAGMA juga mempengaruhi like()
fungsi.
PRAGMA case_sensitive_like = 1;
SELECT
CatName,
like('Br%', CatName),
like('br%', CatName)
FROM Cats;
Hasil:
CatName like('Br%', CatName) like('br%', CatName) ---------- -------------------- -------------------- Brush 1 0 Brash 1 0 Broosh 1 0 100%Fluff 0 0 100$Fluff 0 0
Operator LIKE yang Sadar Unicode
Anda juga dapat menggunakan ekstensi SQLite ICU jika Anda memerlukan LIKE
yang sadar akan unicode operator.
Implementasi LIKE
termasuk dalam ekstensi ini menggunakan fungsi ICU u_foldCase()
untuk memberikan perbandingan kasus independen untuk berbagai karakter unicode.