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

Вниз

Сортировка символьных полей   Найти похожие ветки 

 
carmen ©   (2005-08-24 11:15) [0]

Имеется таблица с информацией о клиенте. Среди полей имеем поля DOM и KV типа Varchar. Примерные значения поля DOM: 2, 106, 1/105, 1/10, 9/54, 106/1. Примерные значения поля KV: 1, 2, 3, 4, 4а.
Вопрос в том как их можно отсортировать правильно чтобы они шли в порядке вохрастания и убывания. На данный момент сортировка имеет такой порядок: 1,11,12,13,14,15,2,20,21,22,23,24,3,4,5,50,51 а поправилам должно быть: 1,2,3,4,5,11,12,13,14,15,20,21,22,23,24,50,51


 
DrPass ©   (2005-08-24 12:06) [1]


> поправилам должно быть: 1,2,3,4,5,11,12,13,14,15,20,21,22,23,24,50,51

Это по правилам сортировки чисел. По правилам сортировки строк правильно
> 1,11,12,13,14,15,2,20,21,22,23,24,3,4,5,50,51

Поэтому если поле должно быть строковым и хранить число, его дополняют нулями до нужного количества разрядов: 01,11,12,13,14,15,02,20... тогда сортироваться будет правильно


 
dolmat   (2005-08-24 17:18) [2]

Можно не нулями а пробелами, красивее будет
 4
 4а
14


 
Gelax ©   (2005-08-24 17:21) [3]

А сортировка должна быть в базе или на клиенте?
Если на клиенте, то многие гриды позволяют
делать Custom сортировку.


 
Desdechado ©   (2005-08-25 12:23) [4]

select house from buildings
where AllTrim(house)<>""
order by strtointsafe(house)

это если есть соответствующие UDF


 
Domkrat ©   (2005-08-25 13:09) [5]

Я бы посоветовал перевести
Dom - integer
Korpus - varchar
Kvartira - integer
Bukva - varchar

Меньше будет путаницы в дальнейшем и сортировками и с дубликатами
типа 4a, 4A, 4 a


 
DrPass ©   (2005-08-25 22:18) [6]


> Desdechado ©   (25.08.05 12:23) [4]
> select house from buildings
> where AllTrim(house)<>""
> order by strtointsafe(house)

Так лучше не делать. В этом случае не работают индексы


 
Desdechado ©   (2005-08-26 10:52) [7]

2 DrPass
Зато нормальная сортировка ;))
А если выборка в 2-3 десятка строк, то разницы в скорости не ощутишь. А индексы будут работать другие - при дополнительном (не AllTrim) ограничении числа строк :)


 
afanasic   (2005-08-26 15:47) [8]

Сделай как посоветовал DrPass, только дополняй нулями уже в разделе ORDER BY - например при помощи функции...


 
Desdechado ©   (2005-08-26 16:25) [9]

2 afanasic
тогда тоже не будет индекс использоваться, против чего так восстал DrPass


 
Zacho ©   (2005-08-26 16:32) [10]

afanasic   (26.08.05 15:47) [8]

Кстати, а можно пример такого запроса с указанием конкретной версии сервера ?


 
carmen ©   (2005-08-26 17:41) [11]

Domkrat ©   (25.08.05 13:09) [5] так делал раньше, но как показівает практика есть дом 1/160а или 1а/56, тоже и с квартирами



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

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

Наверх




Память: 0.49 MB
Время: 0.034 c
2-1125049550
KyRo
2005-08-26 13:45
2005.10.09
Округлить или уменьшить число в дбгрид


1-1126763538
Ярослав
2005-09-15 09:52
2005.10.09
Определить сужествование MDI Child формы


3-1125043936
Виталий Панасенко
2005-08-26 12:12
2005.10.09
Возник. ошибки в дес.-тайме при попытке создать экземпляры полей


2-1125578827
Solomon
2005-09-01 16:47
2005.10.09
вещественные числа в различных Виндах


14-1125337171
Rem
2005-08-29 21:39
2005.10.09
Список стран и городов