![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка символьных полей [D7, IB6.x, FireBird]
carmen © (2005-08-24 11:15:00)Имеется таблица с информацией о клиенте. Среди полей имеем поля 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
carmen (2005-08-26 17:41:00) [1]Domkrat © (25.08.05 13:09) [5] так делал раньше, но как показівает практика есть дом 1/160а или 1а/56, тоже и с квартирами
Zacho (2005-08-26 16:32:00) [2]afanasic (26.08.05 15:47) [8]
Кстати, а можно пример такого запроса с указанием конкретной версии сервера ?
Desdechado (2005-08-26 16:25:00) [3]2 afanasic
тогда тоже не будет индекс использоваться, против чего так восстал DrPass
afanasic (2005-08-26 15:47:00) [4]Сделай как посоветовал DrPass, только дополняй нулями уже в разделе ORDER BY - например при помощи функции...
Desdechado (2005-08-26 10:52:00) [5]2 DrPass
Зато нормальная сортировка ;))
А если выборка в 2-3 десятка строк, то разницы в скорости не ощутишь. А индексы будут работать другие - при дополнительном (не AllTrim) ограничении числа строк :)
DrPass (2005-08-25 22:18:00) [6]
> Desdechado © (25.08.05 12:23) [4]
> select house from buildings
> where AllTrim(house)<>''
> order by strtointsafe(house)
Так лучше не делать. В этом случае не работают индексы
Domkrat (2005-08-25 13:09:00) [7]Я бы посоветовал перевести
Dom - integer
Korpus - varchar
Kvartira - integer
Bukva - varchar
Меньше будет путаницы в дальнейшем и сортировками и с дубликатами
типа 4a, 4A, 4 a
Desdechado (2005-08-25 12:23:00) [8]select house from buildings
where AllTrim(house)<>''
order by strtointsafe(house)
это если есть соответствующие UDF
Gelax (2005-08-24 17:21:00) [9]А сортировка должна быть в базе или на клиенте?
Если на клиенте, то многие гриды позволяют
делать Custom сортировку.
dolmat (2005-08-24 17:18:00) [10]Можно не нулями а пробелами, красивее будет
4
4а
14
DrPass (2005-08-24 12:06:00) [11]
> поправилам должно быть: 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... тогда сортироваться будет правильно