powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Транспонирование из ячейки в строки
4 сообщений из 4, страница 1 из 1
Транспонирование из ячейки в строки
    #39434304
tester99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, прошу помочь.
Требуется разпарсить значения в каждой строке:
205400#120700#133100#134400
на
205400
120700
133100
134400.
Для одной строки запрос работает, однако при добавлении второй, количество строк увеличивается до 30 вместо 8:
Код: plsql
1.
2.
3.
4.
5.
6.
with s as (select '205400#120700#133100#134400' value, 0 id from dual
         --union all select '205401#120701#133101#134401' value, 1 id from dual --с этой строкой результат увеличивается до 30 строк
          )
select id, regexp_substr(value, '[^#]+', 1, level) val
from s
connect by instr(value, '#', 1, level - 1) > 0;


Думаю, что проблема в том, что за корневой элемент он принимает каждое значение, вместо значений с разным id
Заранее благодарен.
...
Рейтинг: 0 / 0
Транспонирование из ячейки в строки
    #39434346
tester99, distinct.
...
Рейтинг: 0 / 0
Транспонирование из ячейки в строки
    #39434355
tester99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Орех Вадимов,

Решено, спасибо.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select regexp_substr(str,'\d+',1,level) result,
       level,
       str
from (select '9546;9547' str, 1 a from dual
      union all
      select '95406;95407;95499' str, 2 a from dual
     )
connect by regexp_substr(str,'\d+',1,level) is not null
    and prior a = a
    and prior dbms_random.value is not null;
...
Рейтинг: 0 / 0
Транспонирование из ячейки в строки
    #39434359
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tester99,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  1  with s as (select '205400#120700#133100#134400' value, 0 id from dual
  2           union all select '205401#120701#133101#134401' value, 1 id from dual --с этой строкой результат
  3            )
  4  select id, regexp_substr(value, '[^#]+', 1, level) val
  5  from s
  6  connect by
  7  s.id=prior s.id and prior sys_guid() is not null and
  8* instr(value, '#', 1, level - 1) > 0
SQL> /

        ID VAL
---------- ---------------------------
         0 205400
         0 120700
         0 133100
         0 134400
         1 205401
         1 120701
         1 133101
         1 134401

8 rows selected.



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


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