Divida los valores en filas separadas

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

devuelve ProductNumber como 1 , 2 , 3,4,5 ; algunos están separados por comas, por lo que quiero dividirlos y hacer el SELECT correcto en ellos con WHERE

Lo que obtuve hasta ahora es:

 SELECT @XML = CONVERT(xml,'<root><s>' + REPLACE(Numbers , ',' ,'</s><s>') + '</s></root>') SELECT [ProductNumber ] = Tcvalue('.','varchar(60)') FROM @XML.nodes('/root/s') T(c) 

Pero no sé cómo convertir Numbers resources SQL seleccionados en cadenas para la conversión XML y no perder la pista de los ProductNumber en qué fila

El problema en su consulta es que está assigning el xml convertido a una variable , pero aquí solo se almacenará la última fila en esa variable .

Prueba algo como esto.

 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)