Microsoft SQL Server
Fonction Split String dans Sql Server
Recherche…
Diviser une chaîne dans Sql Server 2016
Dans SQL Server 2016, enfin, ils ont introduit la fonction de chaîne de fractionnement: STRING_SPLIT
Paramètres: accepte deux paramètres
Chaîne :
Est une expression de n'importe quel type de caractère (par exemple, nvarchar, varchar, nchar ou char).
séparateur :
Expression à caractère unique de n'importe quel type de caractère (par exemple, nvarchar (1), varchar (1), nchar (1) ou char (1)) utilisé comme séparateur pour les chaînes concaténées.
Remarque: Vous devez toujours vérifier si l'expression est une chaîne non vide.
Exemple:
Select Value
From STRING_SPLIT('a|b|c','|')
Dans l'exemple ci-dessus
String : 'a|b|c'
separator : '|'
Résultat :
+-----+
|Value|
+-----+
|a |
+-----+
|b |
+-----+
|c |
+-----+
Si c'est une chaîne vide:
SELECT value
FROM STRING_SPLIT('',',')
Résultat :
+-----+
|Value|
+-----+
1 | |
+-----+
Vous pouvez éviter la situation ci-dessus en ajoutant une clause WHERE
SELECT value
FROM STRING_SPLIT('',',')
WHERE LTRIM(RTRIM(value))<>''
Séparer la chaîne dans Sql Server 2008/2012/2014 en utilisant XML
Comme il n'y a pas de fonction STRING_SPLIT
, nous devons utiliser le hack XML pour diviser la chaîne en lignes:
Exemple:
SELECT split.a.value('.', 'VARCHAR(100)') AS Value
FROM (SELECT Cast ('<M>' + Replace('A|B|C', '|', '</M><M>')+ '</M>' AS XML) AS Data) AS A
CROSS apply data.nodes ('/M') AS Split(a);
Résultat:
+-----+
|Value|
+-----+
|A |
+-----+
|B |
+-----+
|C |
+-----+
T-SQL Table variable et XML
Declare @userList Table(UserKey VARCHAR(60))
Insert into @userList values ('bill'),('jcom'),('others')
--Declared a table variable and insert 3 records
Declare @text XML
Select @text = (
select UserKey from @userList for XML Path('user'), root('group')
)
--Set the XML value from Table
Select @text
--View the variable value
XML: \<group>\<user>\<UserKey>bill\</UserKey>\</user>\<user>\<UserKey>jcom\</UserKey>\</user>\<user>\<UserKey>others\</UserKey>\</user>\</group>