我有一个填充了一些值的表,为了设置值,我使用了一个存储过程来计算哈希函数并保存在数据库中。 在更新值的情况下,应重新计算哈希值。要重新计算哈希,我使用以下过程:
DELIMITER $$
CREATE PROCEDURE `sp_UpdateHash`(IN rkey int)
Begin
DECLARE AuthCode VarChar(10);
SET @input = concat('SELECT r_ac into @AuthCode
FROM table_rec
where r_key=',rkey);
PREPARE squery FROM @input;
EXECUTE squery;
SET @hashed = SHA2(@AuthCode,256);
select @hashed;
DEALLOCATE PREPARE squery;
end;
和用于计算哈希的程序:
CREATE PROCEDURE `sp_GetHash`(IN AuthCode VarChar(10))
BEGIN
DECLARE hashed VarChar(64);
SET hashed = SHA2(AuthCode,256);
select hashed as 'Hash';
END
AuthCode相同,但是当我尝试在select命令之后处理值时哈希是不同的我得到了错误的代码。如果我将两个哈希值与其他结果进行比较,例如来自在线生成器,则结果类似于第二个函数:sp_GetHash
你知道为什么吗?
答案 0 :(得分:0)
问题出在与表具有不同编码的一个字段中,当我在查询中使用它时,它具有不同的大小。