vmconcat与oracle版本|oracle函数WM|CONCAT分隔符默认为逗号但为什么有时是":"冒号是和版本有关么

|

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


赞 (0)