Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c