『壹』 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版本中已经失效;