Maison > base de données > tutoriel mysql > Comment diviser des chaînes dans T-SQL : un équivalent Python `split()` ?

Comment diviser des chaînes dans T-SQL : un équivalent Python `split()` ?

DDD
Libérer: 2025-01-23 08:32:10
original
227 Les gens l'ont consulté

How to Split Strings in T-SQL:  A Python `split()` Equivalent?

La fonction T-SQL est équivalente à la méthode split de Python

Il n'existe pas de fonction intégrée dans T-SQL qui corresponde directement à la méthode Python split(). Cependant, plusieurs techniques peuvent être utilisées pour obtenir des résultats similaires.

Une solution consiste à exploiter XML. Vous pouvez remplacer le délimiteur par <x> et entourer la chaîne résultante par des balises <x>. La conversion de la chaîne modifiée en XML vous permet d'interroger des valeurs individuelles en tant que nœuds.

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

Une autre approche consiste à utiliser un CTE récursif pour diviser la chaîne en caractères individuels.

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

Pour des options supplémentaires et une mise en œuvre détaillée, consultez les ressources suivantes :

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