首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HASHBYTES()函数

HASHBYTES()函数
EN

Stack Overflow用户
提问于 2011-07-04 22:08:10
回答 2查看 10K关注 0票数 0

如何在TSQL代码中使用HASHBYTES()?

我的代码的问题是

代码语言:javascript
复制
UPDATE mytable 
   SET hash_value=HASHBYTES('MD5',convert(varchar(max),col1),convert(varchar(max),col2),..)

返回NULL。你能建议我,我的代码出了什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2011-07-04 22:15:33

HASHBYTES有两个参数。第一个是散列算法(MD2 | MD4 | MD5 | SHA | SHA1),第二个是要散列的值。如果你有任何其他的值作为算法,你会得到NULL作为结果。

如果第二个参数中的值为NULL,您还将获得NULL作为结果。

也许你可以使用这样的东西。

代码语言:javascript
复制
hashbytes('MD5', coalesce(convert(varchar(max),col1), '') + 
                 coalesce(convert(varchar(max),col2), '') +
                 ...)

使用+连接字符串,并使用coalesce处理NULL值。

票数 4
EN

Stack Overflow用户

发布于 2011-07-04 22:17:39

如果不知道代码示例中的col1是什么,这可能无法回答您的问题,但是HASHBYTES的第一个参数应该是algorithm

MSDN中,语法是:

代码语言:javascript
复制
 HashBytes ('<algorithm>', { @input | 'input' } )<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1

编辑文章还解释了输入参数可以是字符串,也可以是对类型为varchar、nvarchar或varbinary的变量的引用,它是单个输入。您正在传递多个输入参数。然而,令我惊讶的是,当我尝试运行函数The hashbytes function requires 2 argument(s).时,您得到的是null,而不是我得到的错误。得到null结果的最有可能的原因是您的输入值为null,即您要转换为varchar的列为NULL。如果你运行select hashbytes('md5', convert(varchar(max), null)),你会得到一个NULL结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6572584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档