Mengurutkan Nomorr IP - MYSQL Dasar #46

Dimisalkan disini Anda memiliki sebuah tabel yang berisi daftar ip address seperti berikut

MariaDB [root93]> CREATE table ipadress(ip varchar(50));
Query OK, 0 rows affected (0.25 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('127.0.0.0');
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('127.0.0.1');
Query OK, 1 row affected (0.05 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('192.168.0.10');
Query OK, 1 row affected (0.02 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('192.168.0.2');
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('192.168.1.10');
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('192.168.1.2');
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('21.0.0.1');
Query OK, 1 row affected (0.03 sec)

MariaDB [root93]> INSERT INTO ipadress(ip)VALUES('255.255.255.255');
Query OK, 1 row affected (0.06 sec)

MariaDB [root93]> SELECT * FROM ipadress;
+-----------------+
| ip              |
+-----------------+
| 127.0.0.0       |
| 127.0.0.1       |
| 192.168.0.10    |
| 192.168.0.2     |
| 192.168.1.10    |
| 192.168.1.2     |
| 21.0.0.1        |
| 255.255.255.255 |
+-----------------+
8 rows in set (0.00 sec)

Nilai diatas jika diurutkan maka akan menghasilkan pengurutan yang diurutkan secara leksikal, jika Anda ingin mengurutkannya secara numerik, maka Anda dapat mengekstrak tiap segmen dan menambahkan nilai nol untuk mengkonversinya menjadi sebuah angka

Lihat daftar isi : Pengurutan Hasil Query

MariaDB [root93]> SELECT * FROM ipadress
    -> ORDER by SUBSTRING_INDEX(ip,'.',1)+0,
    -> SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',-3),'.',1)+0,
    -> SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',-2),'.',1)+0,
    -> SUBSTRING_INDEX(ip,'.',-1)+0;
+-----------------+
| ip              |
+-----------------+
| 21.0.0.1        |
| 127.0.0.0       |
| 127.0.0.1       |
| 192.168.0.2     |
| 192.168.0.10    |
| 192.168.1.2     |
| 192.168.1.10    |
| 255.255.255.255 |
+-----------------+
8 rows in set (0.00 sec)

Tetapi ada cara yang lebih sederhana yaitu dengan memanfaatkan fungsi INET_ATON() yang mengkonversi alamat ip secara langsung menjadi format numerik

MariaDB [root93]> SELECT ip FROM ipadress ORDER by INET_ATON(ip);
+-----------------+
| ip              |
+-----------------+
| 21.0.0.1        |
| 127.0.0.0       |
| 127.0.0.1       |
| 192.168.0.2     |
| 192.168.0.10    |
| 192.168.1.2     |
| 192.168.1.10    |
| 255.255.255.255 |
+-----------------+
        8 rows in set (0.01 sec)

Baca Selanjutnya : Mengambangkan Nilai pada Pengurutan - MySQL Dasar #47

0 Response to "Mengurutkan Nomorr IP - MYSQL Dasar #46"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin