Microsoft SQL Server
SQL Serverの分割文字列関数
サーチ…
SQL Server 2016で文字列を分割する
SQL Server 2016では、最後に、分割文字列関数STRING_SPLIT
導入しSTRING_SPLIT
パラメータ: 2つのパラメータを受け取ります。
文字列 :
任意の文字タイプ(つまり、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