URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2061
[ Назад ]

Исходное сообщение
"Хитрая сортировка"

Отправлено Шанхай , 10-Сен-03 09:29 
В базе данных MySQL хранятся ip-адреса. Нужно чтобы при запросе они отсортировывались начиная с определённого знака. Например правильный результат:

192.19.102.10
192.20.102.11
192.20.102.12
192.19.102.13
192.19.102.14
192.20.102.15
192.19.102.16
192.19.102.17

Неправильный результат
192.19.102.10
192.19.102.13
192.19.102.14
192.19.102.16
192.19.102.17
192.20.102.11
192.20.102.12
192.20.102.15

То есть отсортировываться они должны начиная с 8-го знака!
Как? Язык програмирования - Perl.


Содержание

Сообщения в этом обсуждении
"Хитрая сортировка"
Отправлено rnl , 10-Сен-03 11:42 
я бы попробовал примерно так:

select address from table_name order by substring(address,8)


"Хитрая сортировка"
Отправлено konst , 10-Сен-03 14:00 
>я бы попробовал примерно так:
>
>select address from table_name order by substring(address,8)
Строка м.б. переменной длинны

на перл напр.так
http://www.opennet.me/openforum/vsluhforumID1/25381.html


"Хитрая сортировка"
Отправлено konst , 10-Сен-03 14:57 
>>я бы попробовал примерно так:
>>
>>select address from table_name order by substring(address,8)
>Строка м.б. переменной длинны
>
>на перл напр.так
@a = qw(10.10.23.50 3.3.3.7 109.333.222 111.22.03.4);
foreach $z ( sort { ($a =~ /^.+\.(\d+)/)[0] <=> ($b =~ /^.+\.(\d+)/)[0]  } @a)  {
    print "$z\n";
}
- подобная конструкция опмсана в "perldoc -f sort"