Maison > base de données > tutoriel mysql > Comment puis-je diviser les valeurs délimitées d'une colonne SQL en plusieurs lignes ?

Comment puis-je diviser les valeurs délimitées d'une colonne SQL en plusieurs lignes ?

Barbara Streisand
Libérer: 2025-01-04 11:43:35
original
730 Les gens l'ont consulté

How Can I Split Delimited Values in a SQL Column into Multiple Rows?

Diviser les valeurs délimitées dans une colonne SQL en plusieurs lignes

Les délimiteurs dans les colonnes SQL peuvent créer des défis lorsque vous tentez de diviser des valeurs en plusieurs rangées. Cet article fournit des solutions pour les versions récentes et anciennes de SQL Server.

SQL Server 2016 et plus récent

SQL Server 2016 introduit la fonction STRING_SPLIT, permettant de faciliter séparation des valeurs en utilisant ce qui suit syntaxe :

SELECT s.[message-id], f.value
FROM dbo.SourceData AS s
CROSS APPLY STRING_SPLIT(s.[recipient-address], ';') as f;
Copier après la connexion

Versions SQL Server antérieures à 2016

Pour les anciennes versions de SQL Server, créez une fonction fractionnée telle que :

CREATE FUNCTION dbo.SplitStrings
(
    @List       NVARCHAR(MAX),
    @Delimiter  NVARCHAR(255)
)
RETURNS TABLE
AS
    RETURN (SELECT Number = ROW_NUMBER() OVER (ORDER BY Number),
        Item FROM (SELECT Number, Item = LTRIM(RTRIM(SUBSTRING(@List, Number, 
        CHARINDEX(@Delimiter, @List + @Delimiter, Number) - Number)))
    FROM (SELECT ROW_NUMBER() OVER (ORDER BY s1.[object_id])
        FROM sys.all_objects AS s1 CROSS APPLY sys.all_objects) AS n(Number)
    WHERE Number <= CONVERT(INT, LEN(@List))
        AND SUBSTRING(@Delimiter + @List, Number, 1) = @Delimiter
    ) AS y);
GO
Copier après la connexion

Une fois la fonction split créée, vous pouvez l'utiliser pour extraire valeurs :

SELECT s.[message-id], f.Item
FROM dbo.SourceData AS s
CROSS APPLY dbo.SplitStrings(s.[recipient-address], ';') as f;
Copier après la connexion

Astuce :

Pour un stockage et un référencement optimaux, évitez d'utiliser des tirets dans les noms de colonnes, car ils nécessitent de les mettre entre crochets.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal