关于sqlserver hashbytes的用法,求解!

wangdama6 2018-01-27 02:11:39
现在有user表一张

SELECT hashbytes('SHA1',LoginID)
FROM TB_Frame_User
WHERE loginid = 'test1001'
----------
SELECT LoginID
FROM TB_Frame_User
WHERE loginid = 'test1001'
--------------
SELECT hashbytes('SHA1', 'test1001')

为什么得到的结果不一样,结果分别是如下所示,理论上应该结果1和结果3是一样的啊,都是0x2E3822B99FED1F5EFC012D52B1FF14CC5C85B981才对,LoginID列是nvarchar 50,求解!

0xD87D37B0880EBED2E90BF9E8E52641C3A28CC2DF
test1001
0x2E3822B99FED1F5EFC012D52B1FF14CC5C85B981
...全文
497 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2018-01-30
  • 打赏
  • 举报
回复
不同类型存储的字节数都不一样,希哈值不同也是很正常的,UNCODE(nvarchar)是支持特殊字符的,如果只看值,是特殊字符时就乱套了
xiaoxiangqing 2018-01-30
  • 打赏
  • 举报
回复
nvarchar跟varchar是不一样的,
中国风 2018-01-30
  • 打赏
  • 举报
回复
非UNICODE同UNICODE加密是不同的,每一个字符占用的字节是不同的,前一个是1个字节,后一个占2个字节
SELECT hashbytes('SHA1', 'test1001'),hashbytes('SHA1', N'test1001')
zjcxc 2018-01-30
  • 打赏
  • 举报
回复
你自己都说了,字段是 nvarchar, 最后一个查询的是 varchar, 不一样完全正常
卖水果的net 2018-01-29
  • 打赏
  • 举报
回复
楼主可以研究一下 nvarchar 和 varchar 的区别 SELECT hashbytes('SHA1', N'test1001'), hashbytes('SHA1', 'test1001') go
wangdama6 2018-01-27
  • 打赏
  • 举报
回复
求解啊!!!!!!!!!!!!!!!!

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧