Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.17;
Скачать: CL | DM;

Вниз

sorting   Найти похожие ветки 

 
Ihtiandr ©   (2003-03-31 10:14) [0]

Сортировка производится по полю типа string.
Есть данные: 2a,15a,3ac,17wrf,28hgf.
Упорядочивает так:
15a-17wrf-2a-28hgf-3ac.
Нужно так: 2a-3ac-15a-17wrf-28hgf.


 
Соловьев ©   (2003-03-31 10:16) [1]

2a-3ac-15a-17wrf-28hgf
А какой алгоритм? И СУБД?


 
Ihtiandr ©   (2003-03-31 10:25) [2]

interbase.
Принцип тот что 15 должно быть больше 2, а оно берет как 2>15


 
Соловьев ©   (2003-03-31 10:30) [3]

"оно" все правильно делает. не 2>15, а как раз 2a<15a(!!!) почувствуй разницу. От когда ты ее почувствуешь, тогда сможешь написать алгоритм, ИМХО, UDF+ХП для анализа таких строк и сортировки как ты хочешь.


 
zacho ©   (2003-03-31 10:35) [4]

Как вариант - добавить вычисляемое поле, в котором будут только числа (т.е. 2,3,15,17,28) и сортировать по нему


 
Mike Kouzmine   (2003-03-31 11:09) [5]

2a<15a(!!!)? 2 > 1ххххххххххххххххххххххххххххххххххххххххххх!


 
Anatoly Podgoretsky ©   (2003-03-31 11:26) [6]

Отдельное поле, для "хитрой" сортировки, в которое пиши свои весовые коэффициенты.


 
MsGuns ©   (2003-03-31 12:08) [7]

>Anatoly Podgoretsky © (31.03.03 11:26)

Другого способа я лично не знаю. Кстати, сам с недавних пор для нумерации, к примеру, документов (счета, накладные, платежки и т.д.), использую ДВА поля: Номер (Int) и Префикс (обычно VARCHAR(24).


 
vopros ©   (2003-03-31 12:13) [8]

>MsGuns © (31.03.03 12:08)
Почему именно VARCHAR(24)?


 
Poison   (2003-03-31 12:16) [9]

Проблема твая в том, что сравниваешь ты не числа, а сторки. Т.е. сравниваются десятичные коды символов. В этом и вся поблема, хотя поблемы как таковой я не вижу.

PS почитай литературу насчет String переменных и все станет понятно!!! :)))


 
MsGuns ©   (2003-03-31 12:20) [10]

>Poison (31.03.03 12:16)

Судя по всему вопрос не в том, понимает ли Ихтиандр алгоритм сравнения или нет, а в том, как выбраться из той ситуевины, в которой он (а точнее, его БД) оказался. ИМХО, без ввода доп. суррогатного поля, куда "ручками" будет преобразован оригинальный номер, и последудющей сортировки именно по этому сур.полю, не обойтись.


 
Alexandr ©   (2003-03-31 13:28) [11]

select cast(substr(field,1,2)as integer),field1
from table
order by 1

уж я не говорю про Yaffil где это гораздо проще и быстрее можно сделать...

Хотя... проблема в том, что разное количество цифр вначале...
Значит, алгоритм надо несколько усложнить, но UDF - рулез!



Страницы: 1 вся ветка

Текущий архив: 2003.04.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-54406
Apachi
2003-04-01 08:39
2003.04.17
Потоки


7-54899
bon
2003-02-20 11:26
2003.04.17
Работа с COM портом


7-54932
max2057
2003-02-20 13:14
2003.04.17
CreateFile для CDROM


3-54492
jackie
2003-03-27 09:35
2003.04.17
foxPro


1-54727
Some1
2003-04-03 11:43
2003.04.17
Как удалить папку с подкаталогами?