ホームページ > データベース > mysql チュートリアル > LISTAGG または WM_CONCAT はどのようにして複数のデータベース行を単一のカンマ区切りリストに結合できますか?

LISTAGG または WM_CONCAT はどのようにして複数のデータベース行を単一のカンマ区切りリストに結合できますか?

Barbara Streisand
リリース: 2025-01-19 18:02:09
オリジナル
387 人が閲覧しました

How Can LISTAGG or WM_CONCAT Combine Multiple Database Rows into a Single Comma-Separated List?

複数のデータベース行を単一のカンマ区切り文字列に集約する

データベース タスクでは、複数の行を 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 サイトの他の関連記事を参照してください。

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