Oracle: 行をカンマ区切りのリストに結合する
多くの場合、データ操作では、複数の行を単一のカンマ区切り文字列に集約する必要があります。 オラクルは、これを実現するためのいくつかの方法を提供しています。
方法 1: LISTAGG (Oracle 11.2 以降)
LISTAGG
関数 (Oracle 11.2 以降で利用可能) は、指定された区切り文字を使用して行を効率的に連結します。 その構文は次のとおりです:
<code class="language-sql">LISTAGG(expression, delimiter [, separator]) WITHIN GROUP (ORDER BY order_expression)</code>
例: countries
テーブルから国名のカンマ区切りリストを生成:
<code class="language-sql">SELECT LISTAGG(country_name, ', ') WITHIN GROUP (ORDER BY country_name) FROM countries;</code>
方法 2: WM_CONCAT (11.2 より前の Oracle バージョン)
古い Oracle データベース (11.2 より前) の場合、WM_CONCAT
関数は同様の機能を提供します。
<code class="language-sql">SELECT WM_CONCAT(country_name) FROM countries;</code>
方法 3: カスタム PL/SQL 関数
LISTAGG
も WM_CONCAT
も十分ではない場合は、カスタム PL/SQL 関数を使用することで柔軟なソリューションが提供されます。 これにより、ループと文字列連結を使用した例で示されているように、カスタマイズされた連結ロジックが可能になります。
以上がOracle で行をカンマ区切りのリストに集約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。