将值拆分为单独的行

时间:2015-02-26 07:56:19

标签: sql sql-server split

WITH Numbers AS (SELECT Table.ProductNumber FROM Table WITH (NOLOCK))

返回类似123,4,5的ProductNumber - 有些是以逗号分隔的,所以我想分割,而不是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在哪一行

1 个答案:

答案 0 :(得分:1)

您的查询中的问题是assigning转换为xmlvariable,但此处只有最后一行将存储在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)