您的位置:首页 > 数据库

TSql HASHBYTES 用法

2015-05-26 12:48 89 查看
HashBytes是比CheckSum精确度更高的函数,HashBytes 只能有一个输入参数,并且参数的数据类型是varchar、nvarchar 或 varbinary。Hash value的计算跟Data type相关. The hash is computed differently based on the data type(varchar, nvarchar).

一:HashBytes Syntax

  HASHBYTES ( '<algorithm>', { @input | 'input' } )
  <algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512


参数

'<algorithm>'
  标识用于对输入执行哈希操作的哈希算法。 这是必选参数,无默认值。 需要使用单引号。
@input
  指定包含要对其执行哈希操作的数据的变量。 @input 的数据类型为 varchar、nvarchar 或 varbinary。
' input '
  指定一个表达式,其计算结果为要对其执行哈希操作的字符或二进制字符串。

返回值类型

  Varbinary

二:Examples

Example1,相同的varchar产生相同的hash value

CREATE TABLE [dbo].[test]
(
[code] [int] NULL,
[name] [varchar](10) NULL,
[txt] [nvarchar](10) NULL
)

insert into dbo.test(code)
values(1)

print HASHBYTES('MD5','1')
--0xC4CA4238A0B923820DCC509A6F75849B

select *
from dbo.test
where HASHBYTES('MD5',cast(code as varchar))=0xC4CA4238A0B923820DCC509A6F75849B


Example2, hash的计算跟Data Type 有关

The hash is computed differently based on the data type(varchar, nvarchar).

select HASHBYTES('SHA1',N'123abc') as HashNChar, HASHBYTES('SHA1','123abc') as HashChar;




参考文档:
https://msdn.microsoft.com/en-us/library/ms174415(v=sql.110).aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: