vm_concat

listagg,vmsys.vm_concat与sys_connect_by_path函数

北慕城南 提交于 2019-12-01 03:05:35
WMSYS.WM_CONCAT: 依赖WMSYS 用户,不同oracle环境时可能用不了,返回类型为CLOB,可用substr截取长度后to_char转化为字符类型 LISTAGG : 11g2才提供的函数,不支持distinct,拼接长度不能大于4000,函数返回为varchar2类型,最大长度为4000. listagg与vmsys.vm_concat:可以实现行转成列,并以逗号分开的效果。 区别:listagg是11.2新增的函数,且该函数可以实现组内的排序 --vmsys.vm_concat函数使用 如下所示,按部门进行分组,同一组的在一行中用逗号隔开 SELECT deptno, wmsys.wm_concat(ename) FROM emp GROUP BY deptno; listagg函数: sys_connect_by_path函数: SELECT sys_connect_by_path(ename, ',') FROM (SELECT ename, deptno, rownum rn FROM emp) START WITH rn = 1 CONNECT BY rn = rownum; --substr从第二个开始截取,去掉第一个逗号 SELECT substr(sys_connect_by_path(ename, ','), 2) FROM (SELECT