create function rechar0(@a varchar(8000)) returns varchar(8000) begin declare @b varchar(8000) set @b='' while @a<>'' select @b=@b+left(@a,1),@a=right(@a,len(@a)-1) return @b end go --调用: declare @a varchar(100)set @a='a'+char(0)select dbo.rechar0(@a)
create function rechar0(@a varchar(8000)) returns varchar(8000) begin declare @b varchar(8000) set @b='' while @a<>'' select @b=@b+case when left(@a,1)<>char(0) then left(@a,1) else '' end,@a=right(@a,len(@a)-1) return @b end go
或:create function rechar0(@a varchar(8000)) returns varchar(8000) begin declare @b varchar(8000) set @b='' while @a<>'' begin select @b=@b+left(@a,1) where left(@a,1)<>char(0) set @a=right(@a,len(@a)-1) end return @b end go
CrazyFor(吃素的鼹鼠) :的方法我早就用过了,如果行得通的话就不用进来这里问啦!要是char(0)的位置不定啊,如果是在字段里面的未知位置,你怎样去掉呢
returns varchar(8000)
begin
declare @b varchar(8000)
set @b=''
while @a<>''
select @b=@b+left(@a,1),@a=right(@a,len(@a)-1)
return @b
end
go
--调用:
declare @a varchar(100)set @a='a'+char(0)select dbo.rechar0(@a)
--调用:
declare @a varchar(100)set @a='a'+char(0)+'b'select len(@a)
select len(dbo.rechar0(@a))
returns varchar(8000)
begin
declare @b varchar(8000)
set @b=''
while @a<>''
select @b=@b+case when left(@a,1)<>char(0) then left(@a,1) else '' end,@a=right(@a,len(@a)-1)
return @b
end
go
returns varchar(8000)
begin
declare @b varchar(8000)
set @b=''
while @a<>''
begin
select @b=@b+left(@a,1) where left(@a,1)<>char(0)
set @a=right(@a,len(@a)-1)
end
return @b
end
go