Suche…


Teilen Sie einen String in SQL Server 2016

In SQL Server 2016 wurde schließlich die Split-String-Funktion STRING_SPLIT

Parameter: Es akzeptiert zwei Parameter

String :

Ist ein Ausdruck eines beliebigen Zeichentyps (z. B. nvarchar, varchar, nchar oder char).

Trennzeichen :

Ein einzelner Zeichenausdruck eines beliebigen Zeichentyps (z. B. nvarchar (1), varchar (1), nchar (1) oder char (1)), der als Trennzeichen für verkettete Zeichenfolgen verwendet wird.

Hinweis: Sie sollten immer überprüfen, ob der Ausdruck eine nicht leere Zeichenfolge ist.

Beispiel:

Select Value
From STRING_SPLIT('a|b|c','|')

Im obigen Beispiel

String    : 'a|b|c'
separator : '|'

Ergebnis:

+-----+
|Value|
+-----+
|a    |
+-----+
|b    |
+-----+
|c    |
+-----+

Wenn es sich um eine leere Zeichenfolge handelt:

SELECT value
FROM STRING_SPLIT('',',')

Ergebnis:

  +-----+
  |Value|
  +-----+
1 |     |
  +-----+

Sie können die obige Situation vermeiden, indem Sie eine WHERE Klausel hinzufügen

SELECT value
FROM STRING_SPLIT('',',')
WHERE LTRIM(RTRIM(value))<>''

Zeichenfolge in SQL Server 2008/2012/2014 unter Verwendung von XML aufteilen

Da es keine STRING_SPLIT Funktion gibt, müssen Sie XML-Hack verwenden, um die Zeichenfolge in Zeilen aufzuteilen:

Beispiel:

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); 

Ergebnis:

+-----+
|Value|
+-----+
|A    |
+-----+
|B    |
+-----+
|C    |
+-----+

T-SQL-Tabellenvariable und 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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow