网站链接: 我爱捣鼓
当前位置: 首页 > 数据库  > SQL Server

ms-sqlserver中两处同样是使用HashBytes的MD5函数为什么结果不一样?

2021/2/15 21:08:48

1、select substring(sys.fn_sqlvarbasetostr(HASHBYTES(MD5,UserID)),3,32) as UserID,UserName,Age,Occupation From User where UserID=15338482313结果:66e69cc009688e68c804222aac5562a22、select substring(sys.fn_sqlvarbasetostr(HASHBYTES(MD5,15338482313)),3,…

ms-sqlserver中两处同样是使用HashBytes的MD5函数为什么结果不一样?

1、我们将MD5加密的项作为sql语句中的字段时

select substring(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',UserID)),3,32) as UserID,UserName,Age,Occupation From User where UserID='15338482313'

结果:66e69cc009688e68c804222aac5562a22、

2、直接使用MD5函数取值

select substring(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','15338482313')),3,32)

结果:84b905938f2e33cabb1600ed620be48e

在这里使用的MD5函数都一样为什么结果会不一样呢?

因为第一种数据类型是 nvarchar,第二种是 varchar,由于数据类型及长度不同导致MD5加密的结果也会有所不同

如何使他们的结果一致呢?

其实很简单就是把他们的数据类型改成一样就行了

select substring(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',CONVERT(VARCHAR(150),UserID))),3,32) as UserID,UserName,Age,Occupation From User where UserID='15338482313'


相关资讯

  • 教你sql server突破编辑200行限制,到1000行2000行

    sql server默认的编辑行数限制是200,如果我们想编辑1000行,怎么设置呢?我们可以按照一下步骤去设置就可以了工具-->选项-->sql server对象资源管理器-->命令-->将编辑前xxx行设定0如果还是不懂,可以按照以下图片去进行设置

    2021/2/22 21:39:26
  • Sql Server查询2两个时间间隔的天数、秒数、分数、小时数

    我们经常在查询数据时需要近7天,近1个月,近1年的数据,需要用到datediff函数,具体使用如下所示:select datediff(year, 开始日期,结束日期); --两日期间隔年select datediff(quarter, 开始日期,结束日期); --两日期间隔季select datediff(month, 开始日期,结束日期); …

    2021/2/22 21:14:46