Maison >base de données >tutoriel mysql >Comment simuler le group_concat de MySQL dans SQL Server 2005 ?

Comment simuler le group_concat de MySQL dans SQL Server 2005 ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-25 19:17:11297parcourir

How to Simulate MySQL's group_concat in SQL Server 2005?

reproduisant MySQL group_concat dans SQL Server 2005

SQL Server 2005 n'a pas la fonction pratique group_concat trouvée dans MySQL, créant un défi lorsque vous devez concaténer les valeurs au sein d'un groupe. Bien que les fonctions personnalisées offrent une solution, elles peuvent être lourdes pour ceux qui connaissent moins leur implémentation.

Une alternative pratique utilise les tables système de SQL Server et la fonction FOR XML PATH. Voici un exemple:

<code class="language-sql">SELECT table_name, LEFT(column_names , LEN(column_names )-1) AS column_names
FROM information_schema.columns AS extern
CROSS APPLY
(
    SELECT column_name + ','
    FROM information_schema.columns AS intern
    WHERE extern.table_name = intern.table_name
    FOR XML PATH('')
) pre_trimmed (column_names)
GROUP BY table_name, column_names;</code>

Pour une amélioration des caractères spéciaux, une approche plus robuste est:

<code class="language-sql">WITH extern AS (SELECT DISTINCT table_name FROM INFORMATION_SCHEMA.COLUMNS)
SELECT table_name, LEFT(y.column_names, LEN(y.column_names) - 1) AS column_names
FROM extern
CROSS APPLY (SELECT column_name + ','
             FROM INFORMATION_SCHEMA.COLUMNS AS intern
             WHERE extern.table_name = intern.table_name
             FOR XML PATH(''), TYPE) x (column_names)
CROSS APPLY (SELECT x.column_names.value('.', 'NVARCHAR(MAX)')) y(column_names);</code>

Ces méthodes imitent efficacement group_concat sans nécessiter de fonctions complexes définies par l'utilisateur, ce qui rend le processus plus simple pour les développeurs moins expérimentés avec SQL avancé.

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!

Déclaration:
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