Поиск…


Разделить строку на 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>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow