作用:返回其在 SQL Server 中的输入的 MD2、MD4、MD5、SHA、SHA1 或 SHA2 哈希值。
T_User表中pwd列为varchar类型,执行sql:
INSERT INTO T_User (pwd) VALUES (HASHBYTES('SHA1','123456'))
结果实际存进去的是乱码。
这是由于HASHBYTES函数返回的是varbinary类型的数据,隐式转换为varchar类型后就出现了乱码。
解决1:设计pwd类型为varbinary,则存储的将是0x开头的十六进制的二进制类型;
解决2. 往往pwd列都设计为varchar类型,因此需要显式转换。
这是由于HASHBYTES函数返回的是varbinary类型的数据,隐式转换为varchar类型后就出现了乱码。
解决1:设计pwd类型为varbinary,则存储的将是0x开头的十六进制的二进制类型;
解决2. 往往pwd列都设计为varchar类型,因此需要显式转换。
INSERT INTO T_User (pwd_varchar) VALUES (CONVERT(VARCHAR(50),HASHBYTES('SHA1','123456'),1))
这样存储的值就不是乱码,实际存储的值为0x开头的,如果不需要0x开头,可以设置CONVERT()的style参数为2。
INSERT INTO T_User (pwd_varchar) VALUES (CONVERT(VARCHAR(50),HASHBYTES('SHA1','123456'),2))