我有一列的值为 title
aaaa,bb,cc
bb,ff,gg
ii现在想截取成这样
aaaa bb cc
bb ff gg
ii 也就是分成了3个字段了
请根据“,”来取因为需求可能会是 要第2个逗号之前且第一个逗号之后的内容
所以根据逗号来判别更好!
aaaa,bb,cc
bb,ff,gg
ii现在想截取成这样
aaaa bb cc
bb ff gg
ii 也就是分成了3个字段了
请根据“,”来取因为需求可能会是 要第2个逗号之前且第一个逗号之后的内容
所以根据逗号来判别更好!
go
create table #1 (name varchar(50))
insert #1 select 'title' union all
select 'aaaa,bb,cc' union all
select 'bb,ff,gg' union all
select 'ii'select * from #1select col1=case when charindex(',',name)>0 then left(name,charindex(',',name)-1)
else name end ,
col2=case when charindex(',',name)>0 then left(stuff(name,1,charindex(',',name),''),charindex(',',stuff(name,1,charindex(',',name),''))-1)
else '' end,
col3=case when charindex(',',name)>0 then reverse(left(reverse(name),charindex(',',reverse(name))-1))
else '' end
from #1
drop table #tb
go
create table #tb (title varchar(50))
go
insert into #tb select 'aaaa,bb,cc'
union all select 'bb,ff,gg'
union all select 'ii'
go
select
title1 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))+1),
title2 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))),
title3 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))-1),
title4 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))-2)
from #tb/*
title1 title2 title3 title4
-------------- -------------- -------------- --------------
aaaa bb cc NULL
bb ff gg NULL
ii NULL NULL NULL(3 行受影响)
*/
PARSENAME函数
多的话写函数