2013-03-07 56 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