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!