2013-03-07 62 views
1

我正在运行一个查询,导致自定义Oracle类型的multiset,我想在另一个查询中使用生成的多重集并将其与VARCHAR2字段连接起来。我想知道是否有办法将multiset转换为逗号分隔的字符串?Oracle Multiset to String

什么我从我的查询得到的是:

SCHEMA.TYPE_T(SCHEMA.TYPE('D0010422'),SCHEMA.TYPE('D0010599'),SCHEMA.TYPE('D0010600')) 

我想什么,能够做的是包括本作中另一个查询字符串:

D0010422, D0010599, D0010600 

我多集SQL:

SELECT CAST(MULTISET(query here) AS SCHEMA_type_t) checks FROM DUAL; 

回答

3
create or replace type t_str as table of varchar2(100); 

select 
    listagg(column_value, ',') within group (order by column_value) 
from 
    table(
     cast(
     multiset(
      select 'one' from dual 
      union all 
      select 'two' from dual 
     ) as t_str 
    ) 
    ) 

fiddle

+0

不错,但看起来像10G没有LISTAGG。有其他选择吗? – Victor 2013-03-07 18:57:46

+0

@Victor - 在Oracle 10中,使用'wm_concat(column_value)'而不是'listagg(column_value,',')在组内(order by column_value)' – 2013-03-07 19:54:29