我需要这方面的帮助,任何意见都将不胜感激。
我有一个 Users 表,其字段 UserPassword 的数据类型为 varchar(60)
我从这个选择中插入表用户
SELECT HASHBYTES('SHA2_256','test')
it insert its value (0x9F86D081884C7D659A2FEAA0C55AD015A3BF4F1B2B0B822CD15D6C15B0F00A08)
到目前为止一切顺利
当我想从表中检索用户并且它与字段 UserPassword 的值不匹配时,问题就出现了。
Select u.UserName
from Users u
where UserPassword = HASHBYTES('SHA2_256','test')
查询已执行,结果为 0。为什么???
字段 UserPassword 具有相同的数据类型还是我错了? 我是否必须对值进行任何其他转换才能匹配?
提前致谢
最佳答案
将用户密码的数据类型设置为 VARCHAR(1000) 或其他类型。 HashMap 返回 65 个字符,因此它被截断为 60。
编辑:这会解决它,但改为按照 Dan 所说的进行操作。那更稳健。
关于sql - 为什么使用 SHA2_256 的 SQL 查询在 WHERE 子句中返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199915/