--辅助表 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 行受影响)
有点复杂了。