declare @i smallint ,@new_name varchar(10),@name varchar(10),@numdeclare test_cur cursor for 
        select 姓名,学号 from xsopen test_cur
fetch next from test_cur into @name,@numwhile @@fetch_status=0
   beginset @new_name=' '
set @i=1
--set @name=(select 姓名 from xs where 学号='001101')
 while(@i<=len(@name))
    begin
       if(substring(@name,@i,1)<>' ')
          begin
            set @new_name=@new_name+substring(@name,@i,1)
            set @i=@i+1  
          end
       else set @i=@i+1   
    end
update xs
   set  姓名=ltrim(@new_name)
 where 学号=@num       fetch next from test_cur into @name,@num
end
--select 姓名 from xs where 学号='001101'

解决方案 »

  1.   

    to unsigned
    在我的数据表中,是学号在前,姓名在后,可是游标提取时是先放名字在@name,
    再放学号在@num,游标怎么会辨认出来名字与学号,而不把两者放错?
    可以用批处理的方法,不用游标实现吗?
      

  2.   

    为什么这么麻烦呢?一个语句:update xs
    set 姓名=replace(姓名,' ','')
      

  3.   

    直接用replace(name,' ','')  去update很简单吗。
      

  4.   

    update xs
    set 姓名=replace(姓名,' ','')
    where 姓名 like '% %'
      

  5.   

    to 楼主
    在创建游标时就有一个Select 语句它已经决定了查询结果的顺序 (姓名,学号)