Вы можете попробовать что-то вроде:
DECLARE @List varchar(255) = '1, 2, 23, 4, 5, 6'
DECLARE @X XML
SELECT @X = '<myxml><nodes><n>' +
REPLACE(@List,',','</n></nodes><nodes><n>') +
'</n></nodes></myxml>'
--SELECT @X
SELECT LTRIM(C.value('n[1]','VARCHAR(50)')) AS item1
FROM @X.nodes('/myxml/nodes') Cols (C)
Fiddle demo
Результаты:
| ITEM1 |
--------|--
| 1 |
| 2 |
| 23 |
| 4 |
| 5 |
| 6 |
Примечание: если у вас есть пробелы между числами в соответствии с вашими данными выборки (2 3
), вы можете использовать Replace()
, чтобы удалить их перед преобразованием в INT. IsNumeric() также может быть полезна (подробнее см. Раздел примечания функции isnumeric()).