急,写一函数,根据传的字符串不同,返回唯一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
你看我给你改的函数了么