zhouixi

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
--辅助表
create table a ( 
a int )
declare @b int
set @b=1
while @b<=30
begin
insert into a values(@b)
set @b=@b+1
end;
go
 
--表数据
declare @a table( a varchar(20),id int)
insert into @a select 'abc',1
insert into @a select 'abc bcd',2
insert into @a select 'abc bcd efg',3
insert into @a select 'abc bcd efg hif',4
 
--结果
select  id,(select a+' ' from 
(select upper(left (substring(ab.a1,a.a,charindex(' ',ab.a1+' ',a.a)-a.a),1))+
right(substring(ab.a1,a.a,charindex(' ',ab.a1+' ',a.a)-a.a),len(substring(ab.a1,a.a,charindex(' ',ab.a1+' ',a.a)-a.a))-1) as a,id
 from a,(select a+' ' as a1,id from @a ) as ab where a.a<=len(ab.a1) and substring(' '+ab.a1,a.a,1)=' ') as a2
where a2.id=a1.id for xml path('')) as a from (select distinct id from @a) a1;
 
id          a
1           Abc 
2           Abc Bcd 
3           Abc Bcd Efg 
4           Abc Bcd Efg Hif
(4 行受影响)

有点复杂了。

 

posted on 2016-11-21 20:28  zhouixi  阅读(216)  评论(0)    收藏  举报