Maison > base de données > tutoriel mysql > Comment diviser des chaînes délimitées par des virgules en lignes dans T-SQL ?

Comment diviser des chaînes délimitées par des virgules en lignes dans T-SQL ?

Susan Sarandon
Libérer: 2025-01-23 08:51:11
original
506 Les gens l'ont consulté

How to Split Comma-Delimited Strings into Rows in T-SQL?

Techniques de fractionnement de chaînes en T-SQL

Diviser une chaîne séparée par des virgules en plusieurs lignes est une tâche courante en SQL. T-SQL (implémentation de SQL par Microsoft) propose plusieurs façons d'atteindre cet objectif.

Utiliser XML

Une solution consiste à convertir la chaîne en XML. La structure XML permet une extraction facile de valeurs individuelles sous forme de nœuds XML :

DECLARE @xml xml, @str varchar(100), @delimiter varchar(10)
SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'
SET @delimiter = ','
SET @xml = cast(('<X>'+replace(@str, @delimiter, '</X><X>')+'</X>') as xml)
SELECT C.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as X(C)
Copier après la connexion

Utiliser CTE (Common Table Expression)

Une alternative consiste à utiliser CTE pour créer une série de lignes représentant des caractères de chaîne :

DECLARE @str varchar(100), @delimiter varchar(10)
SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'
SET @delimiter = ','
;WITH cte AS
(
    SELECT 0 a, 1 b
    UNION ALL
    SELECT b, CHARINDEX(@delimiter, @str, b) + LEN(@delimiter)
    FROM CTE
    WHERE b > a
)
SELECT SUBSTRING(@str, a,
CASE WHEN b > LEN(@delimiter) 
    THEN b - a - LEN(@delimiter) 
    ELSE LEN(@str) - a + 1 END) value      
FROM cte WHERE a > 0
Copier après la connexion

Autres méthodes

D'autres moyens de diviser des chaînes dans T-SQL incluent l'utilisation de la fonction CHARINDEX() et de la fonction REGEX_SPLIT_TO_TABLE() (introduites dans SQL Server 2016). Pour plus d'exemples et de discussions, consultez les articles connexes tels que « Comment diviser une chaîne séparée par des virgules ? »

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