About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

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

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.

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply