Pattern Matching (Pencocokan Pola) MySQL


MySQL menyediakan pola pencocokan standar SQL serta bentuk pola pencocokan berdasarkan ekspresi regular extended mirip dengan yang digunakan oleh utilitas Unix seperti vi, grep, dan sed.

Pola pencocokan SQL memungkinkan anda untuk menggunakan “_” untuk menyesuaikan karakter tunggal dan “%” untuk mencocokkan dengan jumlah sembarang dari karakter (termasuk karakter nol). Pada MySQL, pola SQL adalah case-sensitive secara default. Beberapa contoh yang ditampilkan di sini. Anda tidak menggunakan = atau <> ketika anda menggunakan pola SQL, gunakan operator perbandingan LIKE atau NOT LIKE sebagai gantinya.

Untuk menemukan nama yang dimulai dengan “b”:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama LIKE ‘b%’;

Untuk menemukan nama yang diakhiri dengan “fy”:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama LIKE ‘%fy’;

Untuk menemukan nama yang mengandung “w”:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama LIKE ‘%w%’;

Untuk menemukan nama yang berisi tepat lima karakter, menggunakan lima instance dari pola karakter “_”:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama LIKE ‘_____’;

Jenis lain dari pola pencocokan disediakan oleh MySQL menggunakan ekspresi reguler extended. Bila anda uji untuk pencocokan untuk tipe pola, gunakan operator REGEXP dan NOT REGEXP (atau RLIKE dan NOT RLIKE, yang merupakan sinonim).

Daftar berikut menggambarkan beberapa karakteristik dari ekspresi reguler extended:

  • “.” mencocokan karakter tunggal.
  • Sebuah kelas karakter “[…]” mencocokan dengan karakter apapun dalam tanda kurung. Sebagai contoh, “[abc]” yang cocok “a”, “b”, atau “c”. Untuk nama sejumlah karakter, gunakan tanda hubung. “[a-z]” cocok huruf apa saja, sedangkan “[0-9]” cocok dengan sembarang digit.
  • “*” mencocokan nol atau lebih instances dari hal yang ada sebelumnya. Misalnya, “x *” mencocokan sejumlah karakter “x”, “[0-9] *” mencocokan sejumlah digit, dan “*.” mencocokan sejumlah apapun.
  • Sebuah pola pencocokan REGEXP berhasil jika pola sesuai di mana saja dalam nilai yang diuji. (Ini berbeda dari pencocokan pola LIKE, yang berhasil hanya jika pola sesuai dengan nilai keseluruhan.)
  • Untuk menambatkan pola sehingga harus cocok dengan awal atau akhir nilai yang diuji, gunakan “^” di awal atau “$” pada pola.

Untuk menunjukkan bagaimana ekspresi reguler extended bekerja, query LIKE ditunjukkan sebelumnya ditulis ulang di sini untuk menggunakan REGEXP.

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama REGEXP ‘^b’;

Jika anda benar-benar ingin memaksa perbandingan REGEXP menjadi case sensitif, gunakan kata kunci BINARY untuk membuat salah satu strings sebuah string biner. Query ini sesuai hanya untuk huruf “b” kecil pada awal nama:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama REGEXP BINARY ‘^b’;

Untuk menemukan nama yang diakhiri dengan “fy”, gunakan “$” untuk mencocokkan akhir dari nama:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama REGEXP ‘fy$’;

Untuk menemukan nama yang mengandung “w”, gunakan query ini:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama REGEXP ‘w’;

Untuk menemukan nama yang berisi tepat lima karakter, gunakan “^” dan “$” untuk mencocokkan awal dan akhir nama, dan lima instance dari “.” di antara keduanya:

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama REGEXP ‘^…..$’;

Anda juga bisa menulis query sebelumnya menggunakan operator {n} (“ulangi-n-kali”) :

mysql> SELECT * FROM Binatang_Peliharaan WHERE nama REGEXP ‘^.{5}$’;

Iklan
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: