【问题标题】:Oracle 11g : split CLOBs into rows using a native function?Oracle 11g:使用本机函数将 CLOB 拆分为行?
【发布时间】:2016-11-29 11:26:05
【问题描述】:

我有一列列出了 CLOB。

每个 CLOB 都是这种形式:

file1.ext1
file2.ext2
file3.ext3

我想要做的是在不使用 PL/SQL 程序的情况下将所有 CLOBS 组合转换为列出的行。换句话说,是否有一个本机函数可以让我将所有 CLOB 的内容分成几行

【问题讨论】:

标签: sql oracle plsql clob


【解决方案1】:

您可以在选择中使用 LISTAGG 函数,例如:

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

注意:我从未检查过这将如何与 CLOB 一起使用,所以...

【讨论】:

  • LISTAGG 需要WITHIN,要使用WITHIN,我需要有一个单元格可以转换为一行。就我而言,一个单元格 (CLOB) 包含许多应转换为行的行:1 个单元格 ==> 多行
  • 啊,我误解了你的问题。你的意思是将每个 CLOB 分成几行? (对于单个 CLOB 或所有 CLOBS 组合?)。如果是这种情况,并且在每个 CLOB 中都有一行结束的指示(比如|),您可以简单地使用SELECT (REPLACE(Col_a,'|',CHR(10))... 或类似的东西。
  • 1) COLB 包含许多行 2) 我需要将所有 CLOB 组合起来拆分为行 3) 没有指示行结束的位置,只有返回(就像在文本编辑器中一样)
  • 等一下...如果您在 SQL-Developer 中创建一个小的匿名块,它将选择一个 CLOB 值到一个变量中,然后在屏幕上打印该变量,您将得到已经拆分的文本成行? (你写了只有一个返回(就像在文本编辑器中一样)
  • 如果答案是肯定的,我强烈建议在 SQL-Developer 中测试我原来的 SELECT(不使用 SELECT 但打印结果)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2017-10-20
相关资源
最近更新 更多