有時工作中會用到wm_concat列轉行的函數,但是從10205之后,其返回結果為CLOB類型,在PL/SQL developer中顯示為這樣:
但是在sqlplus中顯示正常:
SQL> SELECT wm_concat(column_name) FROM t1 GROUP BY table_name;
WM_CONCAT(COLUMN_NAME)
--------------------------------------------------------------------------------
ENAME,COMM,SAL,JOB
DEPTNO,LOC,DNAME
EMPNO,DEPTNO,COMM,SAL,HIREDATE,MGR,JOB,ENAME
GRADE,HISAL,LOSAL
1
2
3
4
5
6
7
8
此時可以使用dbms_lob函數:
另:
在11GR2中,使用listagg()函數代替wm_concat(),可以提高效率;而且listagg()還可以作為分析函數使用,添加over子句。
SELECT deptno,dbms_lob.substr(wm_concat(ename)) FROM scott.emp a GROUP BY deptno; SELECT deptno,listagg(ename,',') WITHIN GROUP (ORDER BY ename) FROM scott.emp a GROUP BY deptno; SELECT DISTINCT deptno,listagg(ename,',') WITHIN GROUP (ORDER BY ename) OVER (PARTITION BY deptno) FROM scott.emp a;
原文鏈接:https://blog.csdn.net/m0_37933891/java/article/details/71057020