имам таблица с една колона, която има отделени от запетая стойности и искам в ред ..
като
col1
3,4,5
5,6,6
резултатът от връщането трябва да бъде
col1
3
4
5
5
6
6
Отговори:
0 за отговор № 1Вярвам, че по-долу обясняваме как да пресечем стойностите, разделени със запетаи. Можете просто да ги вмъкнете в друга променлива, за да получите необходимата мощност.
Разделяне на стойности, разделени със запетая
2 за отговор № 2
declare @tbl table(data nvarchar(100))
insert into @tbl values("1,2,3")
insert into @tbl values("4,5,6")
insert into @tbl values("7,8,9")
SELECT
Split.a.value(".", "VARCHAR(100)") AS String
FROM (SELECT data,
CAST ("<M>" + REPLACE(data, ",", "</M><M>") + "</M>" AS XML) AS String
FROM @tbl) AS A CROSS APPLY String.nodes ("/M") AS Split(a);
0 за отговор № 3
Можете да използвате рекурсивна заявка, за да извършите това разделяне:
;with cte (item, list) as
(
select
cast(left(col1, charindex(",",col1+",")-1) as varchar(50)) item,
stuff(col1, 1, charindex(",",col1+","), "") list
from yourtable
union all
select
cast(left(list, charindex(",",list+",")-1) as varchar(50)) item,
stuff(list, 1, charindex(",",list+","), "") list
from cte
where list > ""
)
select item
from cte
виждам SQL Fiddle с демонстрация