Maison >base de données >tutoriel mysql >Comment concaténer efficacement des chaînes au sein de groupes dans SQL Server ?

Comment concaténer efficacement des chaînes au sein de groupes dans SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-09 12:47:48179parcourir

How to Efficiently Concatenate Strings Within Groups in SQL Server?

Regroupement et concaténation de chaînes dans SQL Server

SQL Server propose plusieurs façons de concaténer des chaînes au sein de groupes. Une méthode très efficace consiste à créer une fonction d'agrégation définie par l'utilisateur (UDAF). Cette approche simplifie le processus et améliore les performances par rapport à d'autres techniques.

Construire l'UDAF :

Voici comment créer un UDAF pour la concaténation de chaînes :

<code class="language-sql">CREATE FUNCTION [dbo].[GroupConcat] (@ValueList VARCHAR(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @Result VARCHAR(MAX) = '';
    WHILE LEN(@ValueList) > 0
    BEGIN
        SELECT TOP 1 @Value = Value, @ValueList = SUBSTRING(@ValueList, LEN(@Value) + 1, LEN(@ValueList))
        FROM STRING_SPLIT(@ValueList, ',')  -- Assumes comma-separated input
        WHERE @Value <> '';
        SET @Result = @Result + @Value;
    END
    RETURN @Result;
END;</code>

Application de l'UDAF :

La fonction GroupConcat peut être utilisée directement dans vos requêtes SQL :

<code class="language-sql">SELECT Id, [dbo].[GroupConcat](Value) AS ConcatenatedValue
FROM YourTable
GROUP BY Id;</code>

Cela suppose que vos données sont structurées avec une colonne Id représentant les groupes et une colonne Value contenant les chaînes à concaténer. La fonction STRING_SPLIT (disponible dans SQL Server 2016 et versions ultérieures) est utilisée pour gérer efficacement une liste de valeurs séparées par des virgules. Si vos données ne sont pas séparées par des virgules, ajustez le STRING_SPLIT en conséquence ou utilisez une approche différente pour diviser la chaîne.

Exemple illustratif :

À partir d'un exemple de données, la requête produirait :

<code>+----+-----------------+
| Id | ConcatenatedValue |
+----+-----------------+
| 1  | AB               |
| 2  | C                |
+----+-----------------+</code>

Cet UDAF fournit une solution simplifiée et efficace pour concaténer des chaînes au sein de groupes dans SQL Server, améliorant considérablement l'efficacité de la manipulation des données. N'oubliez pas de remplacer YourTable par le nom réel de votre table.

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