порядок по ... номерам? Помогите мне сортировать ip-адреса



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
491   2  

2 ответов:

Попробуйте INET_ATON функция

SELECT ip FROM sn_192_168_0
ORDER BY INET_ATON(ip);

Попробуйте !!!

Предостережение: лучше не хранить значения INET_ATON. Есть некоторые прошлые причуды с этой функцией - у вас есть недопустимые числа между точками и вызовом его в триггерах.

Теперь эти ошибки устранены.

Обрабатываются короткие IP-адреса должным образом. Вот пример из MySQL 5.5.12 в 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)

Вы можете использовать

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

Число 16-это максимальная длина ip

Comments

    Ничего не найдено.