Oracle получить несколько строк из огромной строки через запятую (200000 символов) - PullRequest
0 голосов
/ 30 апреля 2020

Что такое решение для получения одного столбца или нескольких строк из большого текста через запятую.

Like
2015,PLANT,PEST,AND,DISEASE,CONTROL,PLANT,PEST

Should come as 
col1
-----
2015
PLANT
PEST
AND
DISEASE
CONTROL
PLANT
PEST

Решение reg-ex, доступное везде, не работает с данными> 4000 символов

1 Ответ

1 голос
/ 30 апреля 2020

Вы не указали , что не работает с регулярными выражениями, которые вы использовали (и какое из них вы использовали), но - для меня, это работает нормально (хотя у меня нет такого длинного примера , но - я бы посоветовал вам попробовать).

SQL> with test (col) as
  2    (select '2015,PLANT,PEST,AND,DISEASE,CONTROL,PLANT,PEST' from dual union all
  3     select '2020,LITTLE,FOOT,WHAT,DOES,NOT,WORK' from dual
  4    )
  5  select regexp_substr(col, '[^,]+', 1, column_value) col1
  6  from test cross join
  7       table(cast(multiset(select level from dual
  8                           connect by level <= regexp_count(col, ',') + 1
  9                          ) as sys.odcinumberlist));

COL1
--------------------------------------------------------------------------------
2015
PLANT
PEST
AND
DISEASE
CONTROL
PLANT
PEST
2020
LITTLE
FOOT
WHAT
DOES
NOT
WORK

15 rows selected.

SQL>
...