Jumat, 23 Januari 2009

Operator REGEXP

Operator REGEXP (singkatan dari REGular EXPressions) merupakan bentuk lain dari operator LIKE, dengan fungsi yang lebih disempurnakan. Operator REGEXP biasanya ditemani juga dengan simbol-simbol tertentu dalam melaksanakan tugasnya, seperti:

Simbol Keterangan
. Satu tanda titik (.) untuk mewakili satu karakter
[?] Untuk mewakili beberapa karakter atau range yang ditentukan.
^ Untuk posisi awal dari sebuah kriteria yang ditentukan
$ Untuk posisi akhir dari sebuah kriteria yang ditentukan

Menampilkan nama karyawan yang berawalan huruf 'a':
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^a" ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 31 | Anwar |
| 37 | Andika |
+------+--------------+
3 rows in set (0.00 sec)

Menampilkan data karyawan yang namanya berawalan huruf "d".
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^d" ;
+------+--------+
| noid | nama |
+------+--------+
| 13 | Dadan |
| 18 | Dian |
| 19 | Donno |
| 22 | Dadang |
+------+--------+
4 rows in set (0.00 sec)

Menampilkan nama karyawan yang berawalan huruf 'a' sampai dengan huruf 'd':
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^[a-d]"
-> order by nama ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 37 | Andika |
| 31 | Anwar |
| 21 | Bambang |
| 26 | Banowati |
| 40 | Beno |
| 13 | Dadan |
| 22 | Dadang |
| 18 | Dian |
| 19 | Donno |
+------+--------------+
10 rows in set (0.00 sec)

Menampilkan data karyawan yang namanya berakhiran huruf "i":
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "i$"
-> order by nama ;
+------+--------------+
| noid | nama |
+------+--------------+
| 1 | Ahmad Sobari |
| 26 | Banowati |
| 28 | Gunadi |
| 42 | Miranti |
| 38 | Siti |
| 7 | Sobari |
| 2 | Sundariwati |
| 32 | Susilowati |
| 41 | Yanti |
| 5 | Yuliawati |
| 23 | Yuliawati |
+------+--------------+
11 rows in set (0.00 sec)

Menampilkan data karyawan yang namanya berakhiran "wati":
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "wati$"
-> order by nama ;
+------+-------------+
| noid | nama |
+------+-------------+
| 26 | Banowati |
| 2 | Sundariwati |
| 32 | Susilowati |
| 5 | Yuliawati |
| 23 | Yuliawati |
+------+-------------+
5 rows in set (0.00 sec)

Menampilkan nama karyawan yang panjangnya 10 karakter:
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^..........$" ;
+------+------------+
| noid | nama |
+------+------------+
| 3 | Ryan Cakep |
| 9 | Zanda Cute |
| 32 | Susilowati |
+------+------------+
3 rows in set (0.00 sec)

Atau perintah diatas bisa juga ditulis dengan:
mysql> select noid, nama
-> from karyawan
-> where nama REGEXP "^.{10}$" ;
+------+------------+
| noid | nama |
+------+------------+
| 3 | Ryan Cakep |
| 9 | Zanda Cute |
| 32 | Susilowati |
+------+------------+
3 rows in set (0.00 sec)

Tidak ada komentar: