Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка строки с цифрами / 6 сообщений из 6, страница 1 из 1
11.07.2016, 10:08:11
    #39271616
Danny1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строки с цифрами
Добрый день, необходимо отсортировать строки, содержащие числа. Строки произвольные. Если написать обычную сортировку order by, то порядок будет неверным. Нужна адекватная сортировка с учетом номеров.
Пробовал решить задачу с использованием substr и instr, но не удается предусмотреть все варианты ввода.
Подскажите, пожалуйста, как решить данную задачу.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
Select  'текст №4 текст1234' as name1  from dual union all
Select  '№2 текст1234' as name1  from dual union all
Select  '№5.4 текст123' as name1  from dual union all
Select  '№2.1 текст1234' as name1  from dual union all
Select  '№14 текст1234' as name1  from dual union all
Select  'просто текст' as name1  from dual union all
Select  'текст 23' as name1  from dual
order by name1
...
Рейтинг: 0 / 0
11.07.2016, 10:13:25
    #39271619
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строки с цифрами
Danny1111порядок будет неверным[/src]

Детализируйте задачу.
Верный порядок - сначала по первой найденной цифре, затем по-второй? Или еще как-то?
...
Рейтинг: 0 / 0
11.07.2016, 10:21:54
    #39271624
Danny1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строки с цифрами
dmdmdm, допустим в разных строках есть номера №11, №3, №5, №33, №2. обычная сортировка даст следующий порядок: 11-2-3-33-5. А надо 2-3-5-11-33. И соответственно в случае наличия подпунктов 3.1, 2.3, они должны располагаться под номерами 3 и 2 соответственно. Остальная сортировка остается в алфавитном порядке. Т.е. проблема только в числах в данном тексте
...
Рейтинг: 0 / 0
11.07.2016, 10:30:32
    #39271630
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строки с цифрами
Danny1111,

stff
...
Рейтинг: 0 / 0
11.07.2016, 11:15:00
    #39271648
Сортировка строки с цифрами
Danny1111,

Добрый день!

Могу предложить Вам вот такое решение:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
/* Formatted on 11.07.2016 12:13:37 (QP5 v5.252.13127.32867) */
WITH temp
     AS (SELECT 'текст №4 текст1234' AS name1 FROM DUAL
         UNION ALL
         SELECT '№2 текст1234' AS name1 FROM DUAL
         UNION ALL
         SELECT '№5.4 текст123' AS name1 FROM DUAL
         UNION ALL
         SELECT '№2.1 текст1234' AS name1 FROM DUAL
         UNION ALL
         SELECT '№14 текст1234' AS name1 FROM DUAL
         UNION ALL
         SELECT 'просто текст' AS name1 FROM DUAL
         UNION ALL
         SELECT 'текст 23' AS name1 FROM DUAL)
  SELECT REGEXP_SUBSTR (name1, '\d{1,}')
    FROM temp t
   WHERE REGEXP_LIKE (name1, '№\d')
ORDER BY TO_NUMBER (REGEXP_SUBSTR (name1, '\d{1,}')) ASC



Очень эффективно и изящно. Немножко доработаете и получите, что хотели. Одним словом, мысль такова.

Спасибо.
...
Рейтинг: 0 / 0
11.07.2016, 17:02:52
    #39271909
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка строки с цифрами
Гасан АлизадеDanny1111,

..
Очень эффективно и изящно. Немножко доработаете и получите, что хотели. Одним словом, мысль такова.
..
разумеется, баян

и, вообще, помойну кучу разгребая .. не найдёте ничего изящного
пустые хлопоты
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка строки с цифрами / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]