| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Работа с IP |
| Автор: MAKCim 8.10.2009, 18:34 |
| есть таблица, один из столбцов содержит IP адрес (обычный INTEGER, но порядок байт - сетевой) нужно получить все записи таблицы, просортированные по IP, но с т. з. символьного представления IP т. е. 1.10.256.7 1.11.0.1 2.0.0.0 2.0.1.0 2.0.2.255 и т. д. |
| Автор: rthsobakas 8.10.2009, 20:50 | ||
| если бы просто тип integer то можно так select * from TABLE order by IP DESC или так по возрастанию и убыванию select * from TABLE order by IP ASC
Что такое байт сетевой? FFFFFFFF типо из integer вычлиняете байты? |
| Автор: Akina 8.10.2009, 20:53 |
| Ну конвертируй свои сетевые байты в "т.н. символьное представление" с ведущими нулями и сортирь по нему. |
| Автор: MAKCim 8.10.2009, 22:02 |
| мне нужно получить не строки (к тому же сортировка строк будет работать очень медленно для большой таблицы) а данные из таблицы как есть, но в порядке убывания/возрастания IP |
| Автор: skyboy 8.10.2009, 22:46 |
в смысле, http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html#function_inet-ntoa будет работать нормально? может, сразу два поля держать - одно для сортировки и одно для выдачи? записывая одно, править триггером другое? |
| Автор: DimW 9.10.2009, 08:20 | ||
а мускул что по функции сортировать не умеет? вариант:
|
| Автор: Akina 9.10.2009, 08:30 |
Умеет, умеет... но это filesearch. Я уже об этом говорил... |
| Автор: DimW 9.10.2009, 08:59 |
а индекс по функции в мускуле создать нельзя? в доке что то не нашел... :( |
| Автор: skyboy 9.10.2009, 09:20 |
насколько мне известно - нет. |
| Автор: Akina 9.10.2009, 09:41 |
| Автор: DimW 9.10.2009, 10:45 |
есть в оракле, постгрессе и скорей всего в mssql и в db2. |
| Автор: Akina 9.10.2009, 10:52 | ||
В MS SQL нет. Но можно создать индекс по вычисляемому полю (с некоторыми ограничениями, конечно).
|
| Автор: DimW 9.10.2009, 10:53 |
жаль :( |
| Автор: DimW 9.10.2009, 11:59 |
| извиняюсь за уход в оффтоп но не спросить не могу. Akina, я правильно понимаю (делаю вывод из примеров в документации) что в mssql вычислимое поле на основе собственной функции сделать нельзя? на индекс по функции тоже есть ограничение - функция должна возвращать простые типы и при одних и тех же значениях параметров, в любой момент времени, должна возвращать одинаковое значение. |
| Автор: Akina 9.10.2009, 12:08 |
| Признаться, не пробовал... MSDN молчит как партизан. Но с учётом того что UDF не может быть permanent-deterministic - думаю, что нельзя. |
| Автор: skyboy 9.10.2009, 12:10 | ||
это называется "http://ru.wikipedia.org/wiki/%D0%94%D0%B5%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B8%D0%B7%D0%BC". и, кстати, в mysql при определении функции можно указатьб deterministic она или нет. полезно для оптимизатора, видимо. |
| Автор: DimW 9.10.2009, 12:28 | ||
да, спасибо, коротко и ясно
в оракле данную прагму необходимо указывать для функций на основе которых делается индекс - выглядет это со стороны разработчика примерно так - "мамой клянусь что детерминированная" скорей всего так и есть. Akina, skyboy, спасибо за ответы. MAKCim, прошу прощенье за то что влез со своими "избалованными" вариантами. |