|
|
|
Supreme 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!
|
|
|
|
|
Supreme Being
      
участник
Last Login: 06.05.2006 8:46
Сообщ.: 244,
Visits: 2 687
|
|
|
|
|
|
Supreme Being
      
участник
Last Login: 06.05.2006 8:46
Сообщ.: 244,
Visits: 2 687
|
|
Сначала не заметил 1.1.1 Сори. Тогда не знаю. Возможно надо функцию свою написать для нужного количества разрядов, приводящую эту строку к числу. Типа
1.1.1 = 1*100+1*10+1*1 - что-то в этом роде.
|
|
|
|
|
новичок
      
участник
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 пробел "выбирается" раньше других символов. Хотя, надо проверять.
|
|
|
|