oracle行轉列,字符串拼接

用法介紹:

一、WMSYS.WM_CONCAT進行連接字符串
SELECT WMSYS.WM_CONCAT(NAME) FROM t;

結果:A,B,AA,BB,C,C,B

SELECT WMSYS.WM_CONCAT(DISTINCT NAME) FROM t;

結果:A,B,AA,BB,C

二、SYS.STRAGG
SELECT TRIM(',' FROM SYS.STRAGG( [DISTINCT] NAME||NVL2(NAME,',',''))) AS  CON_NAME FROM t; 

結果:A,B,AA,BB,C,C,B

SELECT SYS.STRAGG( [DISTINCT] NAME) AS  CON_NAME FROM t; 

結果:ABAABBCCB
說明:沒有逗號隔開

三、LISTAGG

待補充
異常說明
當用WMSYS.WM_CONCAT時,傳入的參數值太長時(返回的字符串長度不超過4000),則會報如下的錯誤;則可以考慮使用SYS.STRAGG方法來連接字符串。
WMSYS.WM_CONCAT_IMPL PL/SQL: 數字或值錯誤 : 字符串緩衝區太小
特殊說明:
在使用WMSYS.WM_CONCAT,SYS.STRAGG聚合函數的時候,裏面的值是沒有順序的,如果多個字段同時使用了此聚合函數,他們之前的順序並不能一一對應;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章