ホームページ > データベース > mysql チュートリアル > Oracle で MySQL の GROUP_CONCAT 機能を実現するにはどうすればよいですか?

Oracle で MySQL の GROUP_CONCAT 機能を実現するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-15 12:32:44
オリジナル
367 人が閲覧しました

How to Achieve MySQL's GROUP_CONCAT Functionality in Oracle?

Oracle の SQL グループ結合: MySQL の GROUP_CONCAT と同等

MySQL では、特定の列でグループ化された値を連結するために GROUP_CONCAT 関数が広く使用されています。 Oracle は、代替手段を通じて同様の機能を提供します:

LISTAGG機能(11g以上)

<code class="language-sql">SELECT col1,
       LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) AS "names"
FROM table_x
GROUP BY col1;</code>
ログイン後にコピー

出力:

col1 names
1 a, b
2 c, d, e

カスタム機能 (10g 以下)

<code class="language-sql">CREATE OR REPLACE FUNCTION get_comma_separated_value(input_val 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>
ログイン後にコピー

注: 大きなデータセットを処理するときにメモリの問題が発生する可能性があるため、この関数は注意して使用してください。

WM_CONCAT 関数 (サポートされていません)

Oracle の一部の古いバージョンでは、WM_CONCAT と呼ばれるサポートされていない関数が提供されています。ただし、最新の Oracle バージョンでは LISTAGG またはカスタム関数を使用することをお勧めします。

MySQL GROUP_CONCAT と同等

完全を期すために、MySQL GROUP_CONCAT クエリを以下に示します。

<code class="language-sql">SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1;</code>
ログイン後にコピー

以上がOracle で MySQL の GROUP_CONCAT 機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート