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

Bagaimana Operator LIKE Bekerja di SQLite

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Query SQLite di android menggunakan kursor

  2. Format Angka sebagai Mata Uang di SQLite

  3. onCreate() dari RoomDatabase.Callback() tidak dipanggil setelah panggilan berhasil ke .build()

  4. Masalah memori SQLite dengan pendekatan tunggal

  5. Lebih baik menggunakan adaptor Kursor atau adaptor Array