我不得已的解决方法,很笨,做抛砖引玉吧
declare @s varchar(20)
set @s='jiangbing'
set @s=@s+char(0)+char(0)+char(0)
declare @len int
set @len=len(@s)
while @len>0
begin
  if substring(@s,@len,@len)=char(0)
  begin
    set @s=substring(@s,1,@len-1)
    set @len=len(@s)
  end
  else
    breakendprint @s
print len(@s)

解决方案 »

  1.   

    It's too easy!
    update TableName set ColumnName = replace(ColumnName,char(0),'');
      

  2.   

    to zhuzhichao:你肯定没有试过,我已经用上述方法试过的,结果很糟糕。字段内容全丢失
      

  3.   

    to:smartdonkey,数据在字段中表中,不是在变量中,如果逐行循环处理可能太慢
    谢谢 zhuzhichao(加强对Oracle的学习)
    smartdonkey(聪明的毛驴)
      

  4.   

    可以建立一个函数:
    create function fn_killzero(@fld char(20))
    returns char(20)
    as
    begin
    declare @stemp char(20)
    declare @len int
    set @stemp=@fld
    set @len=len(@stemp)
    while @len>0
    begin
      if substring(@stemp,@len,@len)=char(0)
      begin
        set @stemp=substring(@stemp,1,@len-1)
        set @len=len(@stemp)
      end
      else
        breakend
    return @stemp
    end
      

  5.   

    给smartdonkey(聪明的毛驴)加分吧!别无它法!