天天看點

My Sql 對漢字,字母的hash編碼算法

DELIMITER $$

CREATE

FUNCTION `jtorder`.`F_GET_HASH_VALUE`(str VARCHAR(500))

RETURNS BIGINT

BEGIN

DECLARE result BIGINT;

SET @pos = 1;

SET @hashValue = 0;

-- 616263313233

SET @szHex = HEX(str);

-- 12

SET @size = LENGTH(@szHex);

WHILE @pos<@size+1 DO

-- 61

SET @cCh = SUBSTRING(@szHex,@pos,2);

-- a的ASCII=97

SET @nCh = CAST(ASCII(UNHEX(@cCh)) AS UNSIGNED);

-- 97+98+99+49+50+51

SET @hashValue = @hashValue + @nCh;

SET @pos = @pos + 2;

END WHILE;

SET result = @hashValue;

RETURN result;

END$$

DELIMITER ;

轉載于:https://www.cnblogs.com/shiyj/p/4170596.html