Phone Number Pattern Match di SQL

Share:
Menemukan data yang paling mendekati dengan nilai yang terdapat di-table lainnya akan terlihat rumit dan memerlukan pengulangan per-pattern-nya. Contohnya kita ada data telepon nomor, yang kita ingin tahu dari operator mobile yang mana atau area nomor tersebut. Tentu data operator sudah tetap dan kita bisa taruh dalam sebuah table. Pada tulisan kali ini kita akan coba hal yang sebetulnya umum tapi jarang dibahas.



Table

Sekarang kita siapkan table pendukung untuk tulisan ini.

Table Rates


Table Rates ini berisi data prefix nomor salah satu penyedia layanan mobile. Pengaturan harga per-60 detik dibagi berdasarkan nomor awal.



Table Bills
Dalam Table Bills kita melihat data penggunaan komunikasi dari beberapa extension disertai durasi dalam detik.





Target Resultset
Yang ingin dicapai adalah menghitung biaya dari setiap pengunaan yang ada. Kita mencocokkan data dest dengan prefix yang terdekat. Dan kita juga melakukan pembulatan ke atas untuk biaya, karena rate itu untuk per-60 detik. Bila duration ada yang kurang dari 60 detik maka ia akan dijadikan 60 detik.













SQL

Walaupun ini terlihat rumit tapi ini adalah fungsi dasar dari SQL. Yang dimaksud adalah fungsi LIKE dengan pattern '%'. Untuk itu kita kombinasikan dengan CONCAT untuk mendapatkan pattern yang berdasarkan prefix-nya.

MySQL

Untuk mendapatkan kombinasi pattern antara dest dengan prefix kita gunakan LIKE dengan CONCAT. Dan kita hanya ambil yang paling besar kombinasinya dengan MAX.

Kita juga membulatkan duration lewat CEIL lalu dikalikan dengan nilai rate-nya.

























T-SQL

Tidak banyak berbeda untuk T-SQL. Kita tetap menggunakan LIKE yang dikombinasikan dengan CONCAT dan MAX. Dan pembulatannya kita gunakan CEILING.



























Dan resultset-nya sama dengan yang kita perlukan.




Penutup

Pemanfaatan dari fungsi LIKE yang tepat, dapat membantu kita mem-filter seperti yang kita mau. Walaupun kita dihadapkan dengan data yang terlihat sulit untuk disatukan.




No comments

Featured Post

Daftar gambar