使用预定义的系统函数将分隔的字符串(或列)转换为Oracle中的行

时间:2011-04-28 21:37:54

标签: sql oracle plsql

几年前在Oracle 10或9中,我使用的函数类似于“DBMS_COL_2_VAL”(这绝对不是正确的函数)。

此内置函数的目的是根据指定的分隔符将提供的字符串转换为行。我知道有多种方法可以将分隔的字符串转换为行,但我要寻找的是这个特定的函数。

如果你能提供帮助那就太好了。

请不要使用CONNECT,CASE或REGEX提供任何解决方案。

由于

2 个答案:

答案 0 :(得分:7)

我试图找到的功能是SYS.DBMS_DEBUG_VC2COLL

从技术上讲,它不会将分隔的字符串转换为列,但会将逗号分隔值列表转换为行。在我找到一个旧的post之后我意识到了。

示例代码和结果:

with test as  (
    select column_value AS c1  
      from table( SYS.DBMS_DEBUG_VC2COLL( 'a','b','c' ) )  
   )  
 select * from test;

结果:

c1   
__  
a    
b    
c    

答案 1 :(得分:2)

也许想到这个?

DBMS_UTILITY.COMMA_TO_TABLE ( 
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT uncl_array); 

DBMS_UTILITY.COMMA_TO_TABLE ( 
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT lname_array);