• Home
  • /
  • Database
  • /
  • Penggunaan Reguler Expression di MySQL Untuk Mencari Angka di Data Bertipe String

Penggunaan Reguler Expression di MySQL Untuk Mencari Angka di Data Bertipe String

 

Penggunaan reguler expression (regex) tidak hanya diterapkan dalam bahasa pemrograman saja, sebut saja PHP, Python, Java dll, akan tetapi regex juga dapat diterapkan di dalam DBMS, misalnya MySQL.

Pada artikel kali ini akan dibahas bagaimana memanfaatkan regex di MySQL untuk mencari data angka di dalam field bertipe data string. Sebagai contoh kasus, misalkan diberikan sebuah tabel data sebagai berikut:

CREATE TABLE `mhs` (
  `nim` char(8) NOT NULL,
  `nama` varchar(50) NOT NULL,
  `alamat` text NOT NULL,
  `nohp` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`nim`)
)

Berdasarkan struktur tabel di atas, field ‘nohp‘ adalah bertipe data string dalam hal ini adalah varchar(15).

Selanjutnya, misalkan diperoleh beberapa record yang ada di dalam tabel ‘mhs’ adalah sebagai berikut:

Record dalam tabel ‘mhs’

Dari tampilan record di atas, tampak bahwa untuk field ‘nohp’ terdapat beberapa macam format penulisan nomor HP. Di beberapa data terlihat bahwa nomor HP memuat spasi, ada pula yang memiliki tanda +, tanda -, dan juga tanda kurung. Sehingga dalam hal ini format penulisan nomor HP tidaklah standard.

Misalkan format nomor HP yang benar adalah ’08XXXXXXX’ dalam hal ini seluruh digit berupa angka semua, tanpa karakter lain. Selanjutnya akan difilter record data mahasiswa yang nomor HP nya tidak sesuai dengan format tersebut, atau dalam hal ini akan ditampilkan record data mahasiswa yang nomor HP nya masih memuat karakter non angka, dengan tujuan nantinya akan diedit atau divalidasi. Bagaimana menuliskan query SQL nya?

Sebelum menuliskan query untuk memfilter data yang nomor HP nya memuat karakter non angka, terlebih dahulu kita akan membuat query untuk memfilter data nomor HP yang valid, yaitu yang seluruh digitnya berupa angka. Apabila query ini bisa dibuat, maka untuk memfilter nomor HP yang tidak valid cukup dinegasikan saja dengan menambahkan NOT.

OK untuk memfilter data nomor HP yang valid, kita bisa menggunakan regex, yaitu dengan pattern ‘^[0-9]+$‘. Pattern ini memiliki maksud bahwa data yang akan difilter adalah data yang terdiri dari angka 0 s/d 9 mulai dari digit awal (ditandai dengan ^) sampai pada digit akhir (ditandai dengan $). Selanjutnya banyaknya digit angka ini bisa lebih dari satu (ditandai dengan tanda +).

Sehingga untuk memfilter data nomor HP yang valid adalah sebagai berikut:

SELECT * FROM mhs WHERE nohp REGEXP '^[0-9]+$';

Hasil dari query tersebut adalah

Hasil filter nomor HP valid

Berikutnya, untuk menampilkan data mahasiswa bernomor HP tidak valid adalah dengan menambahkan NOT pada query di atas.

SELECT * FROM mhs WHERE nohp NOT REGEXP '^[0-9]+$';

Sehingga akan diperoleh hasil filter sebagai berikut:

Hasil filter nomor HP tidak valid

Mudah bukan penggunaan regexnya? Jika tertarik belajar tentang regex lebih lanjut, maka bisa mempelajarinya di RegexOne.

Demikian artikel ini saya buat, semoga mudah dipahami dan bermanfaat.


Assalaamu'alaikum.. aktivitas keseharian saya mengajar di Universitas Sebelas Maret, dengan matakuliah pemrograman dan basis data. Adapun bidang penelitian saya tentang computational thinking dan computer-aided learning.

Leave a Reply