Oracle 11g: разделить CLOB на строки с помощью встроенной функции?

У меня есть столбец, в котором перечислены CLOB.

Каждый CLOB имеет следующую форму:

file1.ext1
file2.ext2
file3.ext3

Что я хочу сделать, так это преобразовать все CLOBS, объединенные в строки, перечисленные без использования программы PL/SQL. Другими словами, есть ли встроенная функция, которая позволит мне получить содержимое всех CLOB, разбитых на строки?


person devio    schedule 29.11.2016    source источник
comment
См. 2-й ответ здесь: stackoverflow.com/questions/11647041/   -  person Rene    schedule 29.11.2016


Ответы (1)


Вы можете использовать функцию LISTAGG в своем выборе, например:

SELECT LISTAGG(COL_a,',') 
  FROM MyTable
 WHERE ....

Примечание. Я никогда не проверял, как это будет работать с CLOB, поэтому...

person FDavidov    schedule 29.11.2016
comment
LISTAGG требует WITHIN, а для использования WITHIN мне нужна ячейка, которая будет преобразована в строку. В моем случае одна ячейка (CLOB) содержит много строк, которые нужно преобразовать в строки: 1 ячейка ==> много строк - person devio; 29.11.2016
comment
А, я неправильно истолковал ваш вопрос. Что вы имеете в виду, чтобы разделить каждый CLOB на строки? (для одного CLOB или всех CLOBS вместе взятых?). Если это так и в каждом CLOB есть указание на то, где заканчивается строка (скажем, |), вы можете просто SELECT (REPLACE(Col_a,'|',CHR(10))... или что-то в этом роде. - person FDavidov; 29.11.2016
comment
1) COLB содержит много строк 2) Мне нужно, чтобы все CLOB были разделены на строки 3) нет указания, где заканчивается строка, есть только возврат назад (как в текстовом редакторе) - person devio; 29.11.2016
comment
Подождите... Если вы создадите небольшой анонимный блок в SQL-Developer, который выберет одно значение CLOB в переменную, а затем выведет переменную на экран, вы получите текст, уже разбитый на строки? (вы написали есть просто возврат (как в текстовом редакторе)) - person FDavidov; 29.11.2016
comment
Если ответ ДА, я настоятельно рекомендую протестировать мой оригинальный SELECT в SQL-Developer (НЕ ИСПОЛЬЗУЯ SELECT, НО ПЕЧАТЬ РЕЗУЛЬТАТА). - person FDavidov; 29.11.2016
comment
Да, либо печать, либо выбор... Мне нужно перечислить эти строки. Но как ? - person devio; 29.11.2016
comment
Не могли бы вы попробовать запрос, который я предложил в своем ответе? (вам может понадобиться использовать CHR(10) вместо , в качестве последнего параметра LISTAGG). - person FDavidov; 29.11.2016
comment
Как я уже говорил, LISTAGG требует WITHIN, и я не могу использовать его в своем контексте. - person devio; 29.11.2016
comment
ХОРОШО. Не понимаю почему, но... В любом случае пока больше никаких идей. - person FDavidov; 29.11.2016