Страница 1 из 1
Сортировка чисел в varchar
Добавлено: 08 фев 2006, 18:28
raycom
Нужно отсортировать так, что бы получилось
1
2
3а
3б
11
21
а не
1
11
2
21
3а
3б
Может кто чего-нибудь посоветует?
Re: Сортировка чисел в varchar
Добавлено: 08 фев 2006, 19:14
smu
raycom писал(а):Нужно отсортировать так, что бы получилось
...
3а
3б
...
3б - таких чисел не бывает, сколько в ВУЗе не учил математику

-не встречал. Разве какая-то хитрая система .. FF
Самый простой способ
1. Создаете дополнительный столбец тип double precision
2. Используете умный update к новому столбцу
3 -> 3.0
3a -> 3.01
3б -> 3.02
11 -> 11.0
3. Выводите старый столбец, сортируете по новому.
P.S. Update потребует использование UDF, кажется ...
Добавлено: 08 фев 2006, 19:36
kdv
число в строке - это строка, а не число. Соответственно, содержимое строк подчиняется правилам сортировки строк. Если надо сортировать числа в строке - добавляйте ведущие нули, а при показе - убирайте их.
Добавлено: 09 фев 2006, 10:18
Ivan_Pisarevsky
Я своим операторам в приказном порядке велел вводить такие числа в виде
0001
0002
0003а
0003б
0021
и тд... вобщем административными методами.

Добавлено: 09 фев 2006, 18:08
raycom
Мне предложили 3 варианта:
1. создать столбец с избыточной информацией
2. хватать за горло юзеров
3. програмным методом добавлять нули, которые никак не скроеш,скажем, в DBGrid, и наличие которых в начале строки будут раздражать око юзера.
Добавлено: 09 фев 2006, 18:35
kdv
которые никак не скроеш,скажем, в DBGrid
все можно скрыть. у столбца (TField) есть getText/setText, к примеру.
Добавлено: 10 фев 2006, 09:24
dimitr
ORDER BY RPAD(<field>, 10, ' ')
Добавлено: 12 фев 2006, 18:50
smu
dimitr писал(а):ORDER BY RPAD(<field>, 10, ' ')
Так вроде бы получим следующее
'1000______'
'11________'
'3_________'
'3a________'
'9_________'
где '_' - пробел
Добавлено: 13 фев 2006, 01:21
kdv
ну LPAD, а не RPAD. Это вроде бы тебе надо, а не другим. Так?

Добавлено: 13 фев 2006, 15:27
dimitr
да, шо-то у меня право с лево перепутались

Добавлено: 13 фев 2006, 15:47
smu
kdv писал(а):ну LPAD, а не RPAD. Это вроде бы тебе надо, а не другим. Так?

К сожалению, чужие проблемы решать легче, чем свои.

Боюсь показаться занудой, но и LPAD тоже не даст нужный результат.
'________30'
'________31'
'________3a'
Буквы создают проблемы. А так идея неплохая, пусть автор топика сам дальше копает.
Добавлено: 14 фев 2006, 16:27
raycom
kdv писал(а):которые никак не скроеш,скажем, в DBGrid
все можно скрыть. у столбца (TField) есть getText/setText, к примеру.
Спасибо, сработало прекрасно.
А с LPAD и RPAD ничего не выходит. Видимо это какие-то внешние функции? Если это так, то как их подключить к IB 7.0?
Добавлено: 14 фев 2006, 16:48
kdv