『壹』 oracle函數WM_CONCAT分隔符默認為逗號,但為什麼有時是":"冒號,是和版本有關么
sys.wm_concat是oracle10g才有的函數,之前就沒有。
而且這個一直是用逗號做分隔符內的,
你說的情況,可能是:容
用wm_concat後再用replace進行替換了,將 逗號 替換成 冒號了, 這也是一般的方法。
自己改寫了wm_concat的函數,網上有這個函數的原始代碼。
『貳』 在oracle9中如何實現wm_concat的功能
方法一,使用connect by +sys_connect_by_path :
--測試數據
create table test(col varchar2(10));
insert into test values('a');
insert into test values('b');
insert into test values('c');
--SQL語句:
select ltrim(sys_connect_by_path(col, ','), ',')
from (select col, row_number() over(order by rownum) rn from test t)
where connect_by_isleaf = 1
start with rn = 1
connect by rn = prior rn + 1;
方法二,使用xmltype:
select dbms_lob.substr(rtrim(xmlagg(xmlparse(content col || ',' wellformed))
.getclobval(),
','),
4000,
1)
from test;
另外在10,11版本中也不建議使用wm_concat,這個函數屬於非公開函數,在12c版本中已經失效;