將多個資料庫行聚合為單一逗號分隔字串
資料庫任務通常需要將多行合併到一個以逗號分隔的清單中。 Oracle 資料庫使用 LISTAGG
或 WM_CONCAT
函數為此提供了有效的解決方案。 雖然 WM_CONCAT
已棄用,但 LISTAGG
(從 Oracle 11.2 開始提供)提供了卓越的靈活性,是建議的方法。 這兩個函數實現相同的基本結果:將行組合成分隔字串。
考慮檢索國家/地區名稱的查詢:
<code class="language-sql">SELECT * FROM countries;</code>
要產生這些名稱的逗號分隔列表,請使用 LISTAGG
:
<code class="language-sql">SELECT LISTAGG(country_name, ', ') WITHIN GROUP (ORDER BY country_name) FROM countries;</code>
這將傳回包含所有國家/地區名稱的單行,用逗號整齊地分隔並按字母順序排列。
對於支援已棄用的 WM_CONCAT
的資料庫,等效項是:
<code class="language-sql">SELECT WM_CONCAT(country_name) FROM countries;</code>
雖然兩者產生相似的輸出,但 LISTAGG
具有優勢。 它允許自訂分隔符號並提供對聚合值順序的控制。有關詳細的 LISTAGG
函數參數,請參閱資料庫文件。
以上是LISTAGG 或 WM_CONCAT 如何將多個資料庫行組合成一個逗號分隔的清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!