Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

sorting


Ihtiandr ©   (2003-03-31 10:14:00) 

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


Alexandr   (2003-03-31 13:28:00) [1]

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

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

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


MsGuns   (2003-03-31 12:20:00) [2]

>Poison (31.03.03 12:16)

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


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

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

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


vopros   (2003-03-31 12:13:00) [4]

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


MsGuns   (2003-03-31 12:08:00) [5]

>Anatoly Podgoretsky © (31.03.03 11:26)

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


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

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


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

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


zacho   (2003-03-31 10:35:00) [8]

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


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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо