Tutorial MySQL : Ketika Numeric Diperlakukan Sebagai String

Dimisalkan Anda membuat sebuah tabel untuk penilaian, dan penilaian tersebut nantinya akan menyimpan data jenis angka/numerik tetapi kemudian  Anda memperlakukannya sebagai sebuah string bukan numerik, maka ini dalam case tertentu bisa menimbulkan masalah

Dimisalkan saya memliki tabel dengan data seperti berikut 

MariaDB [root93]> SELECT * FROM nil_janda;
+----+-----------+-------+
| id | nama      | nilai |
+----+-----------+-------+
|  1 | Arum      | 75    |
|  2 | Andini    | 85    |
|  3 | Selvia    | 75    |
|  4 | Denita    | 65    |
|  5 | Sinta     | 77    |
|  6 | Risa      | 98    |
|  7 | Rina      | 85    |
|  8 | Fitria    | 85    |
|  9 | Zakia     | 74    |
| 10 | Bunga     | 100   |
| 11 | Lisandini | 100   |
+----+-----------+-------+
11 rows in set (0.001 sec)

Salah contoh masalah yang mungkin bisa muncul adalah ketika Anda menggunakan operator perbandingan atau seperti < (kurang dari) > (lebih dari) untuk mencari nilai dengan kategori tertentu. Query dibawah ini menunjukan bagaimana saya akan mencari sebuah nilai yang kurang dari 70.

MariaDB [root93]> SELECT * FROM nil_janda WHERE nilai < '70';
+----+-----------+-------+
| id | nama      | nilai |
+----+-----------+-------+
|  4 | Denita    | 65    |
| 10 | Bunga     | 100   |
| 11 | Lisandini | 100   |
+----+-----------+-------+
3 rows in set (0.001 sec)

Perhatikan bahwa query diatas juga ikut menampilkan nilai 100 padahal nilai tersebut tidaklah lebih kecil dari 70

Contoh lainnya, jika nilai tersebut tersimpan dalam format "100" bukan 100, maka MySQL juga akan memperlakukannya sebagai karakter dan membandingkan secara alfanumerik. Dalam hal ini, karakter "1" di depan "0" memiliki nilai yang lebih rendah daripada karakter "7" dalam "70", sehingga "100" akan dianggap lebih kecil daripada "70" dalam perbandingan karakter.

Tetapi dalam kasus ini sebenarnya semua nilai memang disimpan dalam bentuk numerik meskipun tipe datanya varchar yang bisa menampung string. Sehingga ketika misalnya kita membuat query dengan memperlakukan datanya sebagai numerik maka data akan ditampilkan dengan benar seperti berikut

MariaDB [root93]> SELECT * FROM nil_janda WHERE nilai < 70;
+----+--------+-------+
| id | nama   | nilai |
+----+--------+-------+
|  4 | Denita | 65    |
+----+--------+-------+
1 row in set (0.001 sec)


0 Response to " Tutorial MySQL : Ketika Numeric Diperlakukan Sebagai String"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin