ホームページ > データベース > mysql チュートリアル > クエリを使用して SQL Server テーブルからカンマ区切りのリストを生成する方法

クエリを使用して SQL Server テーブルからカンマ区切りのリストを生成する方法

DDD
リリース: 2025-01-18 10:07:41
オリジナル
594 人が閲覧しました

How to Generate Comma-Separated Lists from SQL Server Tables Using Queries?

SQL Server: クエリを使用してカンマ区切りリストを生成します

クエリの説明

このクエリはテーブルからカンマ区切りのリストを作成するように設計されており、FOR XML PATH 関数を利用して必要な値を含む XML フラグメントを構築します。サブクエリを使用して、指定された部門の従業員名 (ename) を取得し、XML フラグメント内のスペースをカンマに置き換えます。

<code class="language-sql">SELECT 
    E1.deptno, 
    allemp = Replace ((SELECT E2.ename AS 'data()' 
                       FROM emp AS e2 
                       WHERE e1.deptno = e2.DEPTNO 
                       FOR xml PATH('')), ' ', ', ') 
 FROM EMP AS e1 
 GROUP BY DEPTNO; </code>
ログイン後にコピー

FOR XML PATH の仕組み

FOR XML PATH('') は、指定された列 (この場合は ename) に基づいて emp テーブルの各行の XML フラグメントを生成します。単純な従業員テーブルがあるとします。

<code>EmployeeID      Name
1               John Smith
2               Jane Doe</code>
ログイン後にコピー

次のクエリは XML を作成します:

<code class="language-sql">SELECT  EmployeeID, Name
FROM    emp.Employee
FOR XML PATH ('Employee');</code>
ログイン後にコピー

出力:

<code class="language-xml"><employee><employeeid>1</employeeid><name>John Smith</name></employee><employee><employeeid>2</employeeid><name>Jane Doe</name></employee></code>
ログイン後にコピー

エラー処理と代替手段

提供されたクエリは、data() を XML タグとして使用しようとしていますが、これは無効であり、エラーが発生します。これを回避するには、次の変更されたクエリを使用できます:

<code class="language-sql">SELECT  E1.deptno, 
        STUFF(( SELECT  ', ' + E2.ename 
                FROM    emp AS e2 
                WHERE   e1.deptno = e2.DEPTNO 
                FOR XML PATH('')
            ), 1, 2, '') 
FROM    EMP AS e1 
GROUP BY DEPTNO; </code>
ログイン後にコピー

このクエリは、サブクエリで XML タグが作成されないようにします。また、サブクエリにカンマを追加することで、スペースを含む名前も処理します。

以上がクエリを使用して SQL Server テーブルからカンマ区切りのリストを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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