Maison >base de données >tutoriel mysql >Comment puis-je diviser efficacement les chaînes dédiées à des virgules dans SQL Server 2008 R2?

Comment puis-je diviser efficacement les chaînes dédiées à des virgules dans SQL Server 2008 R2?

DDD
DDDoriginal
2025-01-25 06:56:08480parcourir

How Can I Efficiently Split Comma-Delimited Strings in SQL Server 2008 R2?

T-SQL Straction de chaîne dans SQL Server 2008 R2

SQL Server 2008 R2 manque de fonctionnalités de division de chaîne intégrées, ce qui rend le traitement de chaîne séparée par les virgules. Cet article montre une solution robuste utilisant une fonction personnalisée.

Création d'une fonction divisée personnalisée

La fonction dbo.splitstring suivante divise efficacement les chaînes dédiées à la virgule:

<code class="language-sql">CREATE FUNCTION dbo.splitstring (@stringToSplit VARCHAR(MAX))
RETURNS @returnList TABLE ([Name] [nvarchar](500))
AS
BEGIN
    DECLARE @name NVARCHAR(255), @pos INT;
    WHILE CHARINDEX(',', @stringToSplit) > 0
    BEGIN
        SELECT @pos = CHARINDEX(',', @stringToSplit);
        SELECT @name = SUBSTRING(@stringToSplit, 1, @pos - 1);
        INSERT INTO @returnList SELECT @name;
        SELECT @stringToSplit = SUBSTRING(@stringToSplit, @pos + 1, LEN(@stringToSplit) - @pos);
    END
    INSERT INTO @returnList SELECT @stringToSplit;
    RETURN;
END;</code>

Utilisation de la fonction

Pour utiliser la fonction, passez simplement la chaîne pour être divisée en tant que paramètre:

<code class="language-sql">SELECT * FROM dbo.splitstring('91,12,65,78,56,789');</code>

Cela produira une table avec chaque valeur séparée dans une ligne dans une ligne séparée:

| Nom | | --- | --- | | 91 | | 12 | | 65 | | 78 | | 56 | | 789 |

Cette fonction personnalisée fournit une méthode fiable pour gérer les chaînes dédiées aux virgules dans les limites de SQL Server 2008 R2.

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