SQL Server: Mengenal Operator LIKE dan Wildcard dalam SQL Server

Operator LIKE biasanya digunakan dalam klausa WHERE dalam query untuk memfilter data berdasarkan pola tertentu. Meskipun dapat digunakan dengan tipe data berupa angka dan tanggal, namun lebih disarankan digunakan dengan nilai string.

Pola disini adalah urutan karakter yang akan dicari dalam sebuah kolom atau ekspresi yang dapat memuat beberapa wildcard.  Karakter wildcard membuat operator LIKE lebih fleksibel daripada operator perbandingan string sama dengan (=) dan tidak sama dengan (!=). Jenis-jenis karakter wildcard yang dapat digunakan bersama operator like dalam SQL Server yaitu:

  • Wildcard persen (%): mencari nilai dengan karakter apapun baik karakter kosong, satu karakter, atau banyak karakter sebelum atau setelah karakter %.
  • Wildcard garis bawah (_): mencari nilai dengan karakter apapun untuk mengantikan _ sesuai jumlah karakter _ tersebut.
  • Wildcard kurung kotak [] : mencari nilai yang mengandung range karakter yang ada di dalam kurung kotak tersebut.
  • Wildcard kurung kotak + Pangkat [^]: kebalikan dari wildcard kurung kotak biasa, dia akan mengecualikan karakter range dalam tanda kurung.

Untuk penjelasan lebih mendetail kita akan menggunakan tabel item sebagai contoh kasus.



Like Tanpa Wildcard

Operator LIKE tanpa wildcard hasilnya akan sama saja dengan operator sama dengan (=), seperti yang ditunjukan contoh query di bawah ini. Pada SQL Server kata kunci yang disertakan dengan operator LIKE tidak case sensitive, jadi huruf besar dan kecil sama aja.



Like dengan Wildcard (%)

Pen
Wildcard % tanpa disertai karakter apapun akan menampilkan seluruh data.

SELECT * FROM item WHERE categorycode LIKE '%'



Like dengan Wildcard (%) di Akhir Kata Kunci

Jika kita menambahkan % diakhir kata kunci maka akan menampilkan data yang diawali kata kunci tersebut dan boleh diikuti karakter apapun, baik kosong, 1 karakter, atau banyak karakter.

Sebagai contoh query di bawah ini ingin mencari nama item yang diawali dengan kata ultra. Kata ultra sebagai kata kunci disini juga tidak case sensitive jadi hurup besar atau kecil dianggap sama.

SELECT * FROM item WHERE itemname LIKE 'Ultra%'



Like dengan Wildcard (%) di Awal Kata Kunci

Jika kita memberikan % diawal kata kunci maka akan menampilkan data yang diakhiri kata kunci tersebut dan boleh diawali dengan karakter apapun, baik kosong, 1 karakter, atau banyak karakter.

Sebagai contoh query di bawah ini ingin mencari nama item yang diakhiri dengan kata gr. Kata gr sebagai kata kunci disini juga tidak case sensitive jadi hurup besar atau kecil dianggap sama.

SELECT * FROM item WHERE itemname LIKE '%gr'



Like dengan Wildcard (%) di Awal dan Akhir Kata Kunci

Jika wildcard % mengapit kata kunci di awal dan di akhir maka query akan mencari data yang mengandung kata kunci tersebut baik letaknya di awal, tengah, maupun di akhir.

Contohnya kita akan membuat query yang mencari data yang mengandung kata AL. Kata kunci ini juga tidak case sensitive sehingga hurup besar atau kecil dianggap sama.

SELECT * FROM item WHERE itemname LIKE '%AL%'



Like dengan Wildcard (%) diantara Dua Kata Kunci

Jika kita ingin mencari nilai dengan karakter awal dan karakter akhir tertentu dan dapat diselingi karakter apapun diantaranya (ditengah) maka kita menambahkan wildcard % diantara kata kunci awal dan akhir tersebut.

Pada contoh di bawah kita akan mencari nama item yang diawali dengan karakter CH dan diakhiri dengan karakter GR.

SELECT * FROM item WHERE itemname LIKE 'CH%GR'



Like dengan Wildcard Underscore / Garis Bawah ( _ ) di Akhir Setelah Karakter Kunci

Hampir mirip dengan penggunaan wildcard % di akhir kata kunci tetapi dengan menggunakan underscode kita menentukan dengan pasti berapa karakter yang akan menyertai kata kunci tersebut.

Misalnya query berikut untuk mencari kode kategori dengan awalan hurup C dan 3 karakter bebas setelahnya. Tiga karakter setelah kata kunci bisa apa saja yang penting dibatasi hanya 3 karakter, maka kita memberi 3 buah underscore setelah hurup C.

SELECT * FROM item WHERE categorycode LIKE 'C___'



Like dengan Wildcard Underscore / Garis Bawah ( _ ) di Awal Sebelum Karakter Kunci

Untuk kasus yang ini hampir mirip dengan penggunaan wildcard % di awal kata kunci tetapi dengan menggunakan underscode kita menentukan dengan pasti berapa karakter yang ada sebelum kata kunci tersebut.

Misalnya query berikut untuk mencari kode kategori dengan akhiran angka 2 dan 3 buah karakter sebelumnya bebas. Tiga karakter sebelum kata kunci bisa apa saja yang penting dibatasi hanya 3 karakter, maka kita memberi 3 buah underscore sebelum angka 2.

SELECT * FROM item WHERE categorycode LIKE '___2'



Like dengan Wildcard Underscore / Garis Bawah ( _ ) di Tengah 2 Karakter Kunci Awal dan Akhir

Kasus berikutnya adalah untuk mencari nilai dengan karakter awal dan karakter akhir diketahui, serta karakter di tengahnya bebas bisa apa saja namun dibatasi hanya sejumlah karakter tertentu.

Sebagai contoh kita akan mencari kode kategori dengan awalan C dan akhiran 3 dengan 2 buah karakter bebas di tengahnya.

SELECT * FROM item WHERE categorycode LIKE 'C__3'



Like dengan Wildcard Underscore / Garis Bawah ( _ ) Mengapit di Awal dan Akhir Kata Kunci

Jadi kasus selanjutnya adalah kata kunci yang berada diantara dua buah wildcard underscode. Karakter yang menggantikan underscore bebas tetapi dibatasi hanya sesuai jumlah underscore. Posisi kata kunci dan karakter bebas pengganti underscode juga harus sesuai.

Sebagai contoh di bawah ini kita akan menjadi nilai kode kategori yang ditengahnya adalah 00 dan terdapat 1 karakter bebas di awal serta 1 karakter bebas di akhir.

SELECT * FROM item WHERE categorycode LIKE '_00_'


Like dengan Wildcard Tanda Kurung Kotak [ ]

Wildcard kurung kotak ini untuk mendefinisikan/membatasi pencarian dengan data yang sesuai hanya pada list karakter dalam kurung kotak.

SELECT * FROM item WHERE itemid LIKE '[3,10]'



Jika kita lihat penggunaan query di atas mirip dengan operator IN, tapi karena ini merupakan salah satu wildcard tentu memiliki sesuatu yang special. Misalnya kita ingin menyaring kode kategori dengan 2 huruf di awal adalah C00 dan karakter terakhir boleh satu atau dua makan kita dapat membuat query sebagai berikut:

SELECT * FROM item WHERE categorycode LIKE 'C00[1,2]'



Kita juga bisa mengkombinasikan wildcard kurung besar [ ] dengan wildcard persen % untuk menghasilkan data lebih fleksibel.

Misalnya data nama item dengan 2 huruf awal CHI, 1 huruf sesudahnya adalah K atau T, kemudian diikuti dengan karakter bebas apapun makan query nya sebagai berikut:

SELECT * FROM item WHERE itemname LIKE 'CHI[K,T]%'

Dan hasilnya sebagai berikut:


Like dengan Wildcard [^ ] 

Tambahan tanda ^ dalam kurung berarti mengeluarkan data-data yang sesuai dengan list dari hasil query. Jadi data-data yang sesuai dengan karakter di list dalam kuruk tidak akan muncul dalam hasil query.

e.g.
SELECT * FROM item WHERE categorycode LIKE 'C00[^1,3]'







Post a Comment

0 Comments