将值拆分为单独的行
Split values into separate rows
WITH Numbers AS (SELECT Table.ProductNumber FROM Table WITH (NOLOCK))
returns ProductNumber 像 1
, 2
, 3,4,5
- 有些是用逗号分隔的,所以我想拆分而不是做适当的 SELECT
他们 WHERE
到目前为止我得到的是:
SELECT @XML = CONVERT(xml,'<root><s>' + REPLACE(Numbers , ',' ,'</s><s>') + '</s></root>')
SELECT [ProductNumber ] = T.c.value('.','varchar(60)') FROM @XML.nodes('/root/s') T(c)
但我不知道如何将选定的 SQL 资源 Numbers
转换为用于 XML 转换的字符串,并且不知道 ProductNumber
在哪一行
您的查询中的问题是您 assigning
将 xml
转换为 variable
,但这里只有最后一行将存储在 variable
中。
尝试这样的事情。
SELECT Split.a.value('.', 'VARCHAR(100)') splt_num
FROM (SELECT Cast ('<M>'
+ Replace(ProductNumber, ',', '</M><M>')
+ '</M>' AS XML) AS Data
FROM yourtable) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)
WITH Numbers AS (SELECT Table.ProductNumber FROM Table WITH (NOLOCK))
returns ProductNumber 像 1
, 2
, 3,4,5
- 有些是用逗号分隔的,所以我想拆分而不是做适当的 SELECT
他们 WHERE
到目前为止我得到的是:
SELECT @XML = CONVERT(xml,'<root><s>' + REPLACE(Numbers , ',' ,'</s><s>') + '</s></root>')
SELECT [ProductNumber ] = T.c.value('.','varchar(60)') FROM @XML.nodes('/root/s') T(c)
但我不知道如何将选定的 SQL 资源 Numbers
转换为用于 XML 转换的字符串,并且不知道 ProductNumber
在哪一行
您的查询中的问题是您 assigning
将 xml
转换为 variable
,但这里只有最后一行将存储在 variable
中。
尝试这样的事情。
SELECT Split.a.value('.', 'VARCHAR(100)') splt_num
FROM (SELECT Cast ('<M>'
+ Replace(ProductNumber, ',', '</M><M>')
+ '</M>' AS XML) AS Data
FROM yourtable) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a)