按数字排序?帮我排序ip地址

时间:2012-01-03 22:48:33

标签: mysql

MySQL,尝试按顺序获取IP地址列表。

此查询

select ip from sn_192_168_0 

给出了这个

192.168.0.1
192.168.0.10
192.168.0.100
192.168.0.101

我们想要

192.168.0.1
192.168.0.2
...snip..
192.168.0.10

2 个答案:

答案 0 :(得分:17)

尝试INET_ATON功能

SELECT ip FROM sn_192_168_0
ORDER BY INET_ATON(ip);

试一试!!!

CAVEAT:最好不要存储INET_ATON值。这个函数有一些过去的怪癖,你在点之间有无效的数字,并在触发器中调用它。

现在清理这些错误。

正确处理短IP地址。以下是Windows 7中MySQL 5.5.12的示例

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)

答案 1 :(得分:0)

你可以使用

SELECT ip FROM sn_192_168_0 ORDER BY LPAD(  ip, 16, 0 ) 

数字16是ip的最大长度