Microsoft SQL Server
Split String-functie in SQL Server
Zoeken…
Split een string in SQL Server 2016
In SQL Server 2016 hebben ze eindelijk de functie Split string geïntroduceerd: STRING_SPLIT
Parameters: het accepteert twee parameters
String :
Is een uitdrukking van elk type teken (bijv. Nvarchar, varchar, nchar of char).
scheidingsteken :
Is een enkele karakteruitdrukking van een willekeurig karaktertype (bijv. Nvarchar (1), varchar (1), nchar (1) of char (1)) die wordt gebruikt als scheidingsteken voor aaneengeschakelde tekenreeksen.
Opmerking: u moet altijd controleren of de uitdrukking een niet-lege tekenreeks is.
Voorbeeld:
Select Value
From STRING_SPLIT('a|b|c','|')
In bovenstaand voorbeeld
String : 'a|b|c'
separator : '|'
Resultaat :
+-----+
|Value|
+-----+
|a |
+-----+
|b |
+-----+
|c |
+-----+
Als het een lege string is:
SELECT value
FROM STRING_SPLIT('',',')
Resultaat :
+-----+
|Value|
+-----+
1 | |
+-----+
U kunt bovenstaande situatie vermijden door een WHERE
clausule toe te voegen
SELECT value
FROM STRING_SPLIT('',',')
WHERE LTRIM(RTRIM(value))<>''
Gesplitste tekenreeks in SQL Server 2008/2012/2014 met behulp van XML
Aangezien er geen STRING_SPLIT
functie is, moeten we de XML-hack gebruiken om de string in rijen te splitsen:
Voorbeeld:
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);
Resultaat:
+-----+
|Value|
+-----+
|A |
+-----+
|B |
+-----+
|C |
+-----+
T-SQL-tabelvariabele en 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>