我目前在我的表格中有数据,如下所示。我需要以逗号分隔的选定列数据转换为绿色标记的格式(一起读取和写入类别)
在SQL Server中有什么办法吗?
请仔细查看提案数据.... 也许我之前并不清楚,这不仅仅是分裂问题,而是将一个类别的所有读写组合在一起(有时它们只是读/写),它不仅仅是将逗号分隔的值放在多行中。
{{1}}
答案 0 :(得分:2)
使用Jeff的DelimitedSplit8K
;
with cte as
(
select id, prodlines, ItemNumber, Item = ltrim(Item),
grp = dense_rank() over (partition by id order by replace(replace(ltrim(Item), '(Read)', ''), '(Write)', ''))
from #prodLines pl
cross apply dbo.DelimitedSplit8K(prodlines, ',') c
)
select id, prodlines, prod = stuff(prod, 1, 1, '')
from cte c
cross apply
(
select ',' + Item
from cte x
where x.id = c.id
and x.grp = c.grp
order by x.Item
for xml path('')
) i (prod)
答案 1 :(得分:1)
看看STRING_SPLIT,您可以执行以下操作:
SELECT user_access
FROM Product
CROSS APPLY STRING_SPLIT(user_access, ',');
或者你在乎什么。
答案 2 :(得分:0)
只需使用横向视图爆炸功能:
select access from Product
LATERAL VIEW explode(split(user_access, '[,]')) usrAccTable AS access;