/ / sql множествен ред от стойността на колоната - sql, sql-server-2008, tsql

sql множествен ред от стойността на колоната - sql, sql-server-2008, tsql

имам таблица с една колона, която има отделени от запетая стойности и искам в ред ..

като

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 с демонстрация