首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 字串彙總:WMSYS.WM_CONCAT 將同一群組多筆資料合併為單一欄位

     編輯:Oracle 資料庫基礎

應用場景

需求:一位員工隸屬多個部門,查詢結果希望呈現 張三 | 部門1,部門2,部門3 而非多筆重複列。

解決方案:WMSYS.WM_CONCAT

Oracle 內建未文件化函數 WMSYS.WM_CONCAT 可直接將群組內字串以逗號串接。

完整範例

SELECT tt.uname,
       wmsys.wm_concat(tt.oname) AS departments
FROM (
    SELECT u.uname, o.oname
    FROM usertable u
    JOIN uo t ON u.id = t.uid
    JOIN orup o ON o.id = t.oid
) tt
GROUP BY tt.uname;

執行結果

UNAME  DEPARTMENTS
------ --------------------
張三   部門1,部門2,部門3

注意事項

  • WM_CONCAT 屬非官方支援函數,12c 以降建議改用 LISTAGG(標準 SQL)。
  • 若資料量極大,串接後長度可能超過 4000 字元限制,需評估改用 CLOB 處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved