日期:2014-05-19  浏览次数:20451 次

急,写一函数,根据传的字符串不同,返回唯一ascii值
我写的下面的函数,输入不同的字符串,有时会产生一样的返回值
最好不用随机函数,这样可以在不同的时间相同的字符串可以有相同的返回值
create   function   convertascii(@str   nvarchar(200))
returns   bigint
as
begin

declare   @result   bigint,@ch   nvarchar(10),@i   int,@strlen   int
set   @i=1
set   @strlen=len(@str)
set   @result=0

while       @i <=@strlen    
    begin      
set   @ch=substring(@str,@i,1)
set   @result=@result+ascii(@ch)
set   @i=@i+1    
    end

        return   @result
end

------解决方案--------------------
直接用checksum函数。例如:select checksum( 'asdf '),checksum( 'asdfg ')
------解决方案--------------------
alter function convertascii(@str nvarchar(200))
returns bigint
as
begin

declare @result bigint,@ch nvarchar(10),@i int,@strlen int
set @i=1
set @strlen=len(@str)
set @result=0

while @i <=@strlen
begin
set @ch=substring(@str,@i,1)
set @result=@result+ascii(@ch)*@i ---在这个加上当前的字符串*位置就好了
set @i=@i+1
end

return @result
end


--这样就能区别下面两个字符串了,不知道lz是不是这个意思
select dbo.convertascii( 'ada ')
select dbo.convertascii( 'aad ')
------解决方案--------------------
不是把,我显示的是 297和300
你看我给你改的函数了么