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

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

ORDER BY [D7, MSSQL]


Страницы:   1 2

VadimSpb ©   (2006-05-04 02:11:00) 

Добрый день!
Сортирую целые числа "... ORDER BY Flat"
Получаю:
0
4
44
456
5

Сделал иначе: "... ORDER BY CAST(Flat AS DOUBLE PRECISION)"
Получил как и нужно:
0
4
5
44
456

Почему такая "беда" при сортировке целых чисел в первом варианте?


ANB   (2006-05-06 13:30:00) [21]

Имхо. Странно, дома с буквами бывают, а вот про квартиры я не слышал.


Johnmen   (2006-05-06 13:23:00) [22]


> Desdechado ©   (06.05.06 13:04) [17]


Не всё так просто. Чисто № не может задавать порядок, т.к. надо ещё учитывать 5A ? 5B.


> Genry   (06.05.06 13:05) [18]


Неверно.


Genry   (2006-05-06 13:05:00) [23]


> Genry   (06.05.06 13:01) [16]

Че-то я усложнил как-то :-)))

select Replicate('0', Col_Length('<Table>', '<Column>') - Len(<Column>)) + Column as TmpName,
<Column> as Name
from Table order by TmpName


Desdechado   (2006-05-06 13:04:00) [24]

я бы сделал UDF, которая возвращает строго число из номера квартиры (это порядок сортировки)
сделал бы по UDF вычисляемое поле и индекс по этому полю


Genry   (2006-05-06 13:01:00) [25]


> VadimSpb   (06.05.06 12:34) [13]


попробуй, скорость правда будет невысокая

select Replicate('0', Col_Length('<Table>', '<Column>') - Len(<Column>)) + Column as TmpName,
Right(Replicate('0', Col_Length('<Table>', '<Column>') - Len(<Column>)) + Column, Len(<Column>)) as Name
from Table order by TmpName

Поле TmpName - дополненное нулями, используемое в Order By
Поле Name, уже с обрезанными нулями, его и используем на клиенте


Ega23   (2006-05-06 12:44:00) [26]

Добавить ещё одно целочисленное поле "Порядок сортировки" и сортировать уже по нему.


Sergey13   (2006-05-06 12:37:00) [27]

2[13] VadimSpb   (06.05.06 12:34)
Так почему 2 поля не обеспечат нужное?


VadimSpb   (2006-05-06 12:34:00) [28]

На выходе надо
1
3
5А
333

а не

1
3
333
5А

Можно просто добавлять нули, но как показывает практика требовать это от пользователя нереально, лучше самому программно.


Genry   (2006-05-06 12:34:00) [29]


> VadimSpb   (06.05.06 12:26) [9]


> > Особенно интересна ситуация 4a5b7c
>
> Как кто решает эту проблему?


Для начала надо в голове понять, в какой позиции должно стоять это (4a5b7c) в отсортированном списке квартир
Вполне возможно, что способ [7] вполне подойдет.


Sergey13   (2006-05-06 12:30:00) [30]

2[9] VadimSpb   (06.05.06 12:26)
> Просто использовать 2 поля неполучится:
Почему? В номерах квартир реально встречаются 4a5b7c?


Johnmen   (2006-05-06 12:30:00) [31]


> Как кто решает эту проблему?


В зависимости от того, что требуется на выходе. Т.е. какова логика.


VadimSpb   (2006-05-06 12:26:00) [32]


> Разделить 1 поле на 2 составляющих поля с соответстующими
> типами.


Просто использовать 2 поля неполучится:

> Особенно интересна ситуация 4a5b7c

Как кто решает эту проблему?


Johnmen   (2006-05-06 12:23:00) [33]

Особенно интересна ситуация 4a5b7c
:)))


Genry   (2006-05-06 12:22:00) [34]


> VadimSpb   (06.05.06 12:16) [5]


> Как совместить возможность использования цифр и букв с возможностью
> "цифровой" сортировки?

При записи в базу дополнять слева нулями до общей длины поля.
Соотв. при отображении на клиенте придется немного пошаманить


Sergey13   (2006-05-06 12:19:00) [35]

2 [5] VadimSpb   (06.05.06 12:16)
Разделить 1 поле на 2 составляющих поля с соответстующими типами.


VadimSpb   (2006-05-06 12:16:00) [36]

Если будут буквы, конечно падает.
Как совместить возможность использования цифр и букв с возможностью "цифровой" сортировки?


Desdechado   (2006-05-04 12:50:00) [37]

> ORDER BY CAST(Flat AS DOUBLE PRECISION)
на буквочках не падает?


VadimSpb   (2006-05-04 08:55:00) [38]

Точно - строковый. Забыл, что когда-то номера квартир сделал строками - иногда буквы попадаются.
Сорри, вопрос закрыт, тему в корзину. Посыпаю голову пеплом.


Anatoly Podgoretsky   (2006-05-04 08:48:00) [39]

Врешь, ты сортируешь строковые поля


Плохиш   (2006-05-04 02:34:00) [40]

Тип поля строковый?


Страницы:   1 2

Наверх

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