大家帮我看看这个简单函数,不知道为什么会返回NULL?
alter function getpassword(@a varchar(100))
returns varchar(100)
begin
declare @i smallint,@password varchar(100)
set @i=0
set @password= ' '
while (@i <=len(@a))
begin
set @i=@i+1
set @password=@password+char(ascii(substring(@a,@i,1))+1)
end
return @password
end
--测试
select dbo.getpassword( 'abcd ')
----------------------------------------------------------------
NULL
(所影响的行数为 1 行)
------解决方案--------------------alter function getpassword(@a varchar(100))
returns varchar(100)
begin
declare @i smallint,@password varchar(100)
set @i=0
set @password= ' '
while (@i <=len(@a))
begin
set @password=@password+char(ascii(substring(@a,@i,1))+1)
set @i=@i+1 --这里换一下就可以了
end
return @password
end
------解决方案--------------------while (@i <=len(@a))改为while (@i <=len(@a)-1)
------解决方案----------------------alter function getpassword(@a varchar(100))
--returns varchar(100)
--begin
declare @a varchar(100)
declare @i smallint,@password varchar(100)
set @a= 'password '
set @i=0
set @password= ' '
while (@i <=len(@a))
begin
set @i=@i+1
set @password=@password+char(ascii(substring(@a,@i,1))+1)
print @@password
end
--return @password
--end
這樣看啊