Reputation: 1724
MySQL, Trying to get a list of ip addresses, in order.
this query
select ip from sn_192_168_0
gives this
192.168.0.1
192.168.0.10
192.168.0.100
192.168.0.101
We want
192.168.0.1
192.168.0.2
...snip..
192.168.0.10
Upvotes: 8
Views: 5239
Reputation: 44363
Try the INET_ATON function
SELECT ip FROM sn_192_168_0
ORDER BY INET_ATON(ip);
Give it a Try !!!
CAVEAT : It is best not to store the INET_ATON values. There are some past quirks with this function is you have invalid numbers between dots and calling it in triggers.
These bugs are cleaned up now.
Short IP addresses are handled properly. Here is an example from MySQL 5.5.12 in Windows 7
mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
+------------------------+--------------------+
| INET_ATON('127.0.0.1') | INET_ATON('127.1') |
+------------------------+--------------------+
| 2130706433 | 2130706433 |
+------------------------+--------------------+
1 row in set (0.05 sec)
Upvotes: 19
Reputation: 4526
you can use
SELECT ip FROM sn_192_168_0 ORDER BY LPAD( ip, 16, 0 )
the number 16 is the max length of the ip
Upvotes: 0