Разделение строки varchar(max) в списке на сервере SQL
У меня есть данные, сохраненные как 1-2-4-5, и я хочу разделить их на первый ответ = 1, второй ответ = 2, третий ответ = 4, четвертый ответ = 5 и пятый ответ = 7. Они находятся в колонка как varchar(макс) и нужно сообщить об этом. Есть ли способ разбить их на 5 разных строк или в ранжированном списке? Не все столбцы состоят из 5 частей, некоторые имеют больше, а некоторые меньше, поэтому было бы хорошо, если бы ответ был гибким для этого.
Я использую SSRS 2008R2 и SQL Server 2008R2
заранее спасибо
1 ответ
Решение
declare @Testdata table ( Data varchar(max))
insert @Testdata select '1¬2¬4¬5¬7'
;with tmp(DataItem, Data) as (
select LEFT(Data, CHARINDEX('¬',Data+'¬')-1),
STUFF(Data, 1, CHARINDEX('¬',Data+'¬'), '')
from @Testdata
union all
select LEFT(Data, CHARINDEX('¬',Data+'¬')-1),
STUFF(Data, 1, CHARINDEX('¬',Data+'¬'), '')
from tmp
where Data > ''
)
select * from tmp