Microsoft SQL Server
Функция Split String на сервере Sql
Поиск…
Разделить строку на Sql Server 2016
В SQL Server 2016, наконец, они представили функцию строки Split: STRING_SPLIT
Параметры: он принимает два параметра
Строка :
Является выражением любого символьного типа (т.е. nvarchar, varchar, nchar или char).
разделитель :
Является единственным символьным выражением любого символьного типа (например, nvarchar (1), varchar (1), nchar (1) или char (1)), который используется как разделитель для конкатенированных строк.
Примечание. Вы всегда должны проверить, является ли выражение непустой строкой.
Пример:
Select Value
From STRING_SPLIT('a|b|c','|')
В приведенном выше примере
String : 'a|b|c'
separator : '|'
Результат:
+-----+
|Value|
+-----+
|a |
+-----+
|b |
+-----+
|c |
+-----+
Если это пустая строка:
SELECT value
FROM STRING_SPLIT('',',')
Результат:
+-----+
|Value|
+-----+
1 | |
+-----+
Вы можете избежать вышеуказанной ситуации, добавив предложение WHERE
SELECT value
FROM STRING_SPLIT('',',')
WHERE LTRIM(RTRIM(value))<>''
Сплит-строка в Sql Server 2008/2012/2014 с использованием XML
Поскольку функция STRING_SPLIT
отсутствует, нам нужно использовать XML-хак, чтобы разбить строку на строки:
Пример:
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);
Результат:
+-----+
|Value|
+-----+
|A |
+-----+
|B |
+-----+
|C |
+-----+
Переменная таблицы T-SQL и 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>