ホームページ >データベース >mysql チュートリアル >LISTAGG または WM_CONCAT はどのようにして複数のデータベース行を単一のカンマ区切りリストに結合できますか?
複数のデータベース行を単一のカンマ区切り文字列に集約する
データベース タスクでは、複数の行を 1 つのカンマ区切りのリストに統合する必要があることがよくあります。 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 中国語 Web サイトの他の関連記事を参照してください。