Сортировка символьной последовательности в запросе
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Сортировка символьной последовательности в... Expand / Collapse
Автор
Сообщение
23.08.2005 15:25
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 26.06.2006 11:05
Сообщ.: 81, Visits: 883
Случилась стандартная задача, если кто знает - пусть признается, это будет полезно знать каждому кто работает с PLSQL.
В таблице(допустим с именем TABLE_1) поле(допустим с именем CODE) содержит символьную последовательность: 1, 2, 3, 1.1, 1.1.1, 1.1.2, 1.2, 4, 10, 15, 20, 21, 2.1, 2.2, 3.1
Нужно, чтобы после выполнения запроса вытаскивающего все данные из этого поля рекордсет был в таком виде:
1, 1.1, 1.1.1, 1.1.2, 1.2, 2, 2.1, 2.2, 3, 4, 10, 15, 20, 21
Простой SELECT CODE FROM TABLE_1 ORDER BY CODE даст след.:
1, 10, 15, 1.1, 1.1.1, 1.1.2, 1.2, 2, 20, 21, 2.1, 2.2, 3, 3.1, 4
что неправильно
Может как то можно поиграться функциями LPAD,RPAD?
Подскажите, HELP!
Сообщ. #878849
24.08.2005 9:44
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 06.05.2006 8:46
Сообщ.: 244, Visits: 2 687
order by to_number(CODE)
Сообщ. #878896
24.08.2005 9:49
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 06.05.2006 8:46
Сообщ.: 244, Visits: 2 687
Сначала не заметил 1.1.1 Сори. Тогда не знаю. Возможно надо функцию свою написать для нужного количества разрядов, приводящую эту строку к числу. Типа
1.1.1 = 1*100+1*10+1*1 - что-то в этом роде.
Сообщ. #878898
12.09.2005 14:26
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 12.09.2005 14:27
Сообщ.: 2, Visits: 23
Возможно, поможет запрос вида

select t.code
from table_1 t
order by translate(t.code, ''1234567890. '', ''1234567890 '');

Думаю, при использовании любого значения NLS_LANGUAGE пробел "выбирается" раньше других символов. Хотя, надо проверять.
Сообщ. #880200
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 9:30