Maison >base de données >tutoriel mysql >Comment diviser efficacement des chaînes dans SQL Server 2008 R2 ?

Comment diviser efficacement des chaînes dans SQL Server 2008 R2 ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-25 07:06:09314parcourir

La chaîne dans la segmentation efficace SQL Server 2008 R2

Question:

L'utilisation de séparateurs (comme la virgule) La chaîne de segmentation est des besoins communs dans le traitement des données. Cependant, de nombreuses solutions efficaces dans la version supérieure de SQL Server ne conviennent pas à SQL Server 2008 R2.

Solution:

Pour SQL Server 2008 R2, une méthode fiable consiste à utiliser T-SQL pour créer une fonction de définition de l'utilisateur personnalisé (UDF). L'UDF suivant appelé dbo.splitstring peut être utilisé pour diviser la chaîne en fonction des séparateurs spécifiés:

Pour utiliser cet UDF, passez simplement la chaîne pour être divisée en tant que paramètre, comme indiqué ci-dessous:
<code class="language-sql">CREATE FUNCTION dbo.splitstring (@stringToSplit VARCHAR(MAX))
RETURNS @returnList TABLE ([Name] [nvarchar](500))
AS
BEGIN
    DECLARE @name NVARCHAR(255)
    DECLARE @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>

Cela renverra une table, qui contient les composants de la chaîne d'origine, qui est séparée par des virgules.
<code class="language-sql">SELECT * FROM dbo.splitstring('91,12,65,78,56,789')</code>

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