mysql;
есть таблица, один из столбцов содержит IP адрес (обычный INTEGER, но порядок байт - сетевой)
нужно получить все записи таблицы, просортированные по IP, но с т. з. символьного представления IP
т. е.
1.10.256.7
1.11.0.1
2.0.0.0
2.0.1.0
2.0.2.255
и т. д.
1. once - 08 Октября, 2009 - 18:35:38 - перейти к сообщению
2. DeepVarvar - 08 Октября, 2009 - 19:32:34 - перейти к сообщению
3. EuGen - 09 Октября, 2009 - 02:33:45 - перейти к сообщению
SELECT * FROM `table` ORDER BY INET_NTOA(`int_ip`)
4. Ch_chov - 09 Октября, 2009 - 05:55:37 - перейти к сообщению
Цитата:
Разве бывают такие IP ?
1.10.256.7
5. once - 09 Октября, 2009 - 09:45:48 - перейти к сообщению
EuGen пишет:
SELECT * FROM `table` ORDER BY INET_NTOA(`int_ip`)
ето понятно, только айпи будут перевернутые, тоесть не в том порядке и сортировка по строкам
(Добавление)
Ch_chov пишет:
Цитата:
Разве бывают такие IP ?1.10.256.7
ето для примера, что должны идти с меньшего к большему или наоборот(asc|desc)
6. Ch_chov - 09 Октября, 2009 - 10:14:05 - перейти к сообщению
Цитата:
ето для примера, что должны идти с меньшего к большему
Если поменять байты местами получится 7.256.10.1
Это что реальный IP?
Может стоит хранить IP в нормальном виде (строковом или int)?
И не будет никаких проблем с сортировкой.
7. amonsh - 13 Октября, 2009 - 10:08:19 - перейти к сообщению
сортируйте по auto_increment (кто как называет кто ИД кто кей) а айпишники действительно храните в текстовых полях.
8. Champion - 13 Октября, 2009 - 10:54:10 - перейти к сообщению
Храните как int и всё будет хорошо.amonsh что-то странное ты изложил.