powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка строки с цифрами
6 сообщений из 6, страница 1 из 1
Сортировка строки с цифрами
    #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
Сортировка строки с цифрами
    #39271619
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danny1111порядок будет неверным[/src]

Детализируйте задачу.
Верный порядок - сначала по первой найденной цифре, затем по-второй? Или еще как-то?
...
Рейтинг: 0 / 0
Сортировка строки с цифрами
    #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
Сортировка строки с цифрами
    #39271630
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danny1111,

stff
...
Рейтинг: 0 / 0
Сортировка строки с цифрами
    #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
Сортировка строки с цифрами
    #39271909
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гасан АлизадеDanny1111,

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

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


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