SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Cara Membuat Operator LIKE SQLite Case-Sensitive

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android Mendorong Pembaruan di Play Store

  2. Bagaimana cara mendapatkan id dari database dengan mengklik item tampilan daftar di android

  3. SQLite Memiliki

  4. Bagaimana Fungsi DateTime() Bekerja di SQLite

  5. bagaimana menerapkan pewarisan tabel di GreenDao