admin

将值拆分为单独的行

sql

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

返回ProductNumber像123,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哪一行在哪一行


阅读 55

收藏
2021-06-07

共1个答案

admin

查询中的问题是您assigning将转换xml为a 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)
2021-06-07