網頁

2010年5月27日 星期四

mysql中ip排序的問題

當我使用下面的指令查詢資料時

               select * from ipmactable order by ip

出現下面囧境:

192.168.1.1
192.168.1.111
192.168.1.2
192.168.1.22
192.168.1.5

如上ip位址以文字方式排序,而不是以數字方式排序。

在mysql中有兩個函數,一個INET_NTOA() 一個INET_ATON()
N就是數字(NUMBER) A就是位址(ADDRESS)
如果下指令   SELECT INET_ATON('127.0.0.1');
出現   2130706433
如果下指令   SELECT INET_NTOA(2130706433);
出現   '127.0.0.1'

所以我在查詢時排序使用INET_ATON()就可以把IP使用數字化排序。
指令:
          select * from ipmactable order by inet_aton(ip)

IP排序便可正常如下:

192.168.1.1
192.168.1.2
192.168.1.5
192.168.1.22
192.168.1.111

沒有留言:

張貼留言