Microsoft SQL Server
Funkcja Split String w serwerze Sql
Szukaj…
Podziel ciąg w Sql Server 2016
W SQL Server 2016 wreszcie wprowadzono funkcję podzielonego łańcucha: STRING_SPLIT
Parametry: Akceptuje dwa parametry
Ciąg :
Jest wyrażeniem dowolnego typu znaków (tj. Nvarchar, varchar, nchar lub char).
separator :
Jest wyrażeniem jednoznakowym dowolnego typu znaków (np. Nvarchar (1), varchar (1), nchar (1) lub char (1)), który jest używany jako separator dla połączonych łańcuchów.
Uwaga: Zawsze należy sprawdzać, czy wyrażenie nie jest ciągiem pustym.
Przykład:
Select Value
From STRING_SPLIT('a|b|c','|')
W powyższym przykładzie
String : 'a|b|c'
separator : '|'
Wynik:
+-----+
|Value|
+-----+
|a |
+-----+
|b |
+-----+
|c |
+-----+
Jeśli to pusty ciąg:
SELECT value
FROM STRING_SPLIT('',',')
Wynik:
+-----+
|Value|
+-----+
1 | |
+-----+
Można uniknąć powyższej sytuacji, dodając klauzulę WHERE
SELECT value
FROM STRING_SPLIT('',',')
WHERE LTRIM(RTRIM(value))<>''
Podziel ciąg w Sql Server 2008/2012/2014 przy użyciu XML
Ponieważ nie ma funkcji STRING_SPLIT
, musimy użyć STRING_SPLIT
XML, aby podzielić ciąg na wiersze:
Przykład:
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);
Wynik:
+-----+
|Value|
+-----+
|A |
+-----+
|B |
+-----+
|C |
+-----+
Zmienna tabeli T-SQL i 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>
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow