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

Comment diviser des chaînes séparées par des virgules dans T-SQL ?

Mary-Kate Olsen
Libérer: 2025-01-23 08:47:13
original
750 Les gens l'ont consulté

How to Split Comma-Separated Strings in T-SQL?

Fonction Simuler Split en T-SQL

Diviser les valeurs séparées par des virgules en lignes distinctes est une tâche courante en programmation. Dans T-SQL, il n'existe pas de fonction de fractionnement native, mais il existe plusieurs techniques pour obtenir des résultats similaires.

Une solution consiste à utiliser le traitement XML. En convertissant la chaîne délimitée par des virgules en un document XML, puis en utilisant XQuery pour extraire les valeurs, nous pouvons remplir le tableau avec ces valeurs individuelles :

<code class="language-sql">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)</code>
Copier après la connexion

Une alternative consiste à utiliser une expression de table commune récursive (CTE) pour parcourir la chaîne et extraire les sous-chaînes :

<code class="language-sql">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</code>
Copier après la connexion

De nombreuses autres façons de diviser des chaînes séparées par des virgules dans T-SQL peuvent être trouvées dans le lien de référence fourni dans cette réponse Stack Overflow : Comment diviser des chaînes séparées 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!

source:php.cn
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