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>
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>
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!