介绍常用的字符串聚合(精灵)函数
1.WMSYS.WM_CONCAT
从oracle 10G启动支持,使用案例如下:
select deptno,WMsys.WM_concat,ename
来自Emp
组依据深度;
要用另一个标点符号替换字符之间的分隔符,请添加替换函数
选择深度,替换(WM sys.WM _ concat (ename ),',',')
来自Emp
组依据深度;
2.listagg(measure_expr,delimiter ) within group (order _ by _ clause ) over (query _ partition _ clau se ) ) ) )
受oracle 11G R2支持,可以自行指定分隔符。 可以按列对拼接的字符串进行排序。 使用案例如下。
选择深度,listagg(ename,',') within group (order by sal ) )。
来自Emp
组依据深度;
3.SYS_CONNECT_BY_PATH
oracle 9i和更高版本支持有两个参数。 第一个参数是树字段,第二个参数是用于父代和子代分隔符。 此函数适用于具有父子关系的树结构显示。 使用案例如下。
selectmax(deptno ),max ) substr ) sys_connect_by_path ) ename,'-',2 ) )
来自Emp
where deptno=10
开始with ename='鲜艳的鼠标'
connect by prior empno=mgr
;