Разделение строки 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 
Другие вопросы по тегам