将值拆分为单独的行

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 在哪一行

您的查询中的问题是您 assigningxml 转换为 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)