sql - 为什么使用 SHA2_256 的 SQL 查询在 WHERE 子句中返回 NULL

标签 sql sql-server database

我需要这方面的帮助,任何意见都将不胜感激。

我有一个 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/

相关文章:

sql - 将子查询转换为联接

php - Laravel Microsoft Sql Server 连接错误

java - 我使用什么简单的数据库解决方案将解析的变量从 eclipse 提取到数据库

sql - 学校评分系统需要架构

java - Spring数据映射对象

sql-server - 枢轴和级联空列

c# - C# 函数中的 SQL COALESCE UPDATE

Python 提要解析器 : How can I check for new RSS data?

php - 使用 MySQL 数据库字段枚举值填充 PHP 组合框

MySQL:条件似乎无法正常工作