MySQL INET_ATON으로 IP 주소 정렬하기.
mysql에서 ip 주소(char type field)를 정렬하면 원하는 결과가 나오지 않는다.
mysql> select ip from device_device where category_id=2 order by ip; +----------------+ | ip | +----------------+ | 192.168.100.1 | | 192.168.100.10 | | 192.168.100.11 | ... | 192.168.100.35 | | 192.168.100.36 | | 192.168.100.37 | | 192.168.100.4 | | 192.168.100.5 | | 192.168.100.6 | | 192.168.100.7 | | 192.168.100.9 | +----------------+ 35 rows in set (0.00 sec) mysql>
아래와 같이 inet_aton 함수를 사용하면 원하는 순서대로 정렬된다.
mysql> select ip from device_device where category_id=2 order by inet_aton(ip); +----------------+ | ip | +----------------+ | 192.168.100.1 | | 192.168.100.2 | | 192.168.100.3 | ... | 192.168.100.29 | | 192.168.100.30 | | 192.168.100.31 | | 192.168.100.32 | | 192.168.100.33 | | 192.168.100.34 | | 192.168.100.35 | | 192.168.100.36 | | 192.168.100.37 | +----------------+ 35 rows in set (0.00 sec)