首頁 >資料庫 >mysql教程 >Oracle中如何實作GROUP_CONCAT功能?

Oracle中如何實作GROUP_CONCAT功能?

Barbara Streisand
Barbara Streisand原創
2025-01-15 12:28:44384瀏覽

How to Achieve GROUP_CONCAT Functionality in Oracle?

Oracle 中的群組連接操作

MySQL 的 GROUP_CONCAT 函數可以將分組後多行的值連接成一個字串。 Oracle 沒有完全等效的函數,但有多種方法可以實現類似的功能。

Oracle 11g 及更高版本使用 LISTAGG

Oracle 11g 引入了 LISTAGG 函數,可以將值聚合為逗號分隔的字串:

<code class="language-sql">SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) AS names
FROM table_x
GROUP BY col1</code>

Oracle 10g 及更低版本使用自訂函數

對於 Oracle 10g 及更低版本,您可以建立自訂函數:

<code class="language-sql">CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val IN NUMBER)
  RETURN VARCHAR2
IS
  return_text VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/</code>

使用方法:

<code class="language-sql">SELECT col1, get_comma_separated_value(col1) FROM table_name</code>

注意: 某些較舊的 Oracle 版本中提供了一個(不受支援的)函數 WM_CONCAT

MySQL 中的替代方法(用於比較)

在 MySQL 中,您可以使用 GROUP_CONCAT 函數:

<code class="language-sql">SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1</code>

以上是Oracle中如何實作GROUP_CONCAT功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn