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

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

сортировка по varchar [Firebird]


Страницы:   1 2

zorik ©   (2008-04-18 12:20:00) 

есть поле name типа varchar с данными: 1, 2, 10, 1-р, 21, 3-е, ...
нужно "правильно" отсортировать данные по этому полю, тоесть:
1, 1-р, 2, 3-е, 10, 21, ...
order by name<code/> возвращает: 1, 10, 1-р, 2, 21, 3-е, ...
раньше я обходил эту проблему с использованием UDF - создавал допольнительное поле SORTNAME COMPUTED BY (mysort(name))<code/>, где функция mysort возвращала преобразованое поле, например
1-р -> 0001-р,
10 -> 0010,
...

какие будут решения, чтоб не использовать UDF?


zorik   (2008-04-18 12:38:00) [21]

Появилась идея!
В базе хранить 2 значения: номер (числовое) и приставку(текстовую). Логику реализовать на клиенте. Когда пользователь вводит или редактирует значение - разделять стринг на две части (левая числовая, а правая - текст) и записывать в базу 2 поля

Как только начал просить помощи, сразу идеи полезли )))


zorik   (2008-04-18 12:33:00) [22]

а нету в Firebird функций разделения строк. Можно бы было разделить тогда на числовую и текстовую часть?


Ega23   (2008-04-18 12:31:00) [23]

Я обычно практически в любой таблице, где нужна сортировка, добавляю integer-поле Ord, в котором либо пользователь сам может нужный порядок проставить (чем меньше значение, тем "выше" запись будет во всех выборках), либо я сам могу этим делом управлять.

Правда не знаю, насколько в твоей ситуации этот вариант поможет...


Страницы:   1 2

Наверх

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