Maison > base de données > tutoriel mysql > Comment créer une liste de noms d'employés délimités par des virgules dans SQL Server ?

Comment créer une liste de noms d'employés délimités par des virgules dans SQL Server ?

DDD
Libérer: 2025-01-18 10:17:09
original
136 Les gens l'ont consulté

How to Create a Comma-Delimited List of Employee Names in SQL Server?

Requête pour créer une liste séparée par des virgules dans SQL Server

La requête que vous avez fournie est conçue pour créer une liste de noms d'employés séparés par des virgules à partir d'une table. Cependant, la complexité de la requête peut vous dérouter. Décomposons-le étape par étape.

Étape 1 : Combinez les sous-requêtes de noms d'employés

Sous-requête :

<code class="language-sql">SELECT E2.ename AS 'data()' 
FROM emp AS e2 
WHERE e1.deptno = e2.DEPTNO 
FOR xml PATH('')</code>
Copier après la connexion

Renvoyer le nom de l'employé connecté au format XML. L'alias "data()" est utilisé pour forcer une erreur, qui est ensuite masquée par la clause FOR XML PATH(''). Cela se traduira par du XML sans aucune balise.

Étape 2 : Supprimer les espaces

La fonction

Replace() permet de remplacer les espaces dans les chaînes XML par des virgules :

<code class="language-sql">allemp = Replace ((SELECT E2.ename AS 'data()' 
                       FROM emp AS e2 
                       WHERE e1.deptno = e2.DEPTNO 
                       FOR xml PATH('')), ' ', ', ') </code>
Copier après la connexion

Étape 3 : Regroupement et sortie

Utilisez GROUP BY DEPTNO pour regrouper les requêtes par numéro de service. Ensuite, affichez le résultat sous la forme d’une liste de noms d’employés séparés par des virgules pour chaque service.

Requête alternative

La requête suivante peut également être utilisée pour obtenir les mêmes résultats, avec quelques améliorations :

<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>
Copier après la connexion

Cette requête utilise la fonction STUFF() pour supprimer la première virgule et l'espace. Il omet également l'alias dans la sous-requête pour éviter de créer des balises XML.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal