我通过创建一个函数来解决这个问题,该函数首先将每个字符转换为其 ASCII 值,然后将 ASCII 表示中所有数字的值相加。
功能如下:
create function dbo.getAsciiRepresentation
(
@string varchar (max)
)
returns int
as
BEGIN
DECLARE @position int, @aux char(3), @myvalFirst varchar(2000)='1'
DECLARE @intOfVal bigint
declare @total int, @myval varchar(2000)='1'
SET @position = 1
WHILE @position <= DATALENGTH(@string)
BEGIN
SET @aux = ASCII(SUBSTRING(@string, @position, 1))
SET @myvalFirst = @myvalFirst+ replace(@aux,' ','0')
SET @position = @position + 1
END
set @myval = @myvalFirst
set @position = 1
set @total = 0
WHILE @position <= DATALENGTH(@myval)
BEGIN
set @aux = SUBSTRING(@myval, @position, 1)
set @total = @total + cast(@aux as int)
SET @position = @position + 1
END
return @total
END
只要存在相同的字符,无论顺序如何,这都会返回相同的值。