Maison > base de données > tutoriel mysql > Comment puis-je diviser des chaînes séparées par des virgules dans SQL Server 2012 sans utiliser STRING_SPLIT ?

Comment puis-je diviser des chaînes séparées par des virgules dans SQL Server 2012 sans utiliser STRING_SPLIT ?

Mary-Kate Olsen
Libérer: 2025-01-11 07:50:42
original
1014 Les gens l'ont consulté

How Can I Split Comma-Separated Strings in SQL Server 2012 Without Using STRING_SPLIT?

Séparation de chaînes séparées par des virgules SQL Server 2012 : une solution basée sur XML

Le niveau de compatibilité de SQL Server 2012 peut restreindre l'accès à la fonction STRING_SPLIT. Cet article présente une solution de contournement efficace utilisant des techniques XML pour diviser les valeurs séparées par des virgules.

Exploiter XML et CROSS APPLY

Cette méthode transforme la chaîne séparée par des virgules en une structure XML. CROSS APPLY extrait ensuite chaque valeur en tant que nœud de ce XML. Voici le code SQL :

<code class="language-sql">SELECT Split.a.value('.', 'NVARCHAR(MAX)') AS DATA
FROM
(
    SELECT CAST('<X>'+REPLACE(@ID, ',', '</X><X>')+'</X>' AS XML) AS String
) AS A
CROSS APPLY String.nodes('/X') AS Split(a);</code>
Copier après la connexion

Exemple illustratif

Utilisons ces exemples de paramètres :

<code class="language-sql">DECLARE @ID NVARCHAR(300)= '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20';
DECLARE @Marks NVARCHAR(300)= '0,1,2,5,8,9,4,6,7,3,5,2,7,1,9,4,0,2,5,0';</code>
Copier après la connexion

La requête suivante montre le fractionnement de ces chaînes et l'insertion des résultats dans un tableau :

<code class="language-sql">INSERT INTO @StudentsMark
SELECT C.id, C1.marks
FROM CTE C
LEFT JOIN CTE1 C1 ON C1.RN = C.RN;</code>
Copier après la connexion

Résultat

Le résultat est un tableau avec des colonnes « id » et « marks », chacune remplie avec les valeurs divisées de @ID et @Marks.

Cette approche basée sur XML offre une méthode fiable pour gérer les données séparées par des virgules dans SQL Server 2012, en contournant les limitations de niveau de compatibilité.

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