比较来自世界各地的卖家的域名和 IT 服务价格

应使用哪种类型的数据来存储哈希?

我知道Hashi在不同类型的数据的基础上是不同的 SQL Server. 一个支持 Unicode 其他N. .... 等等 /还排序/

我用 char/32/ 作为数据类型,输出是奇怪的。
使用它


select HASHBYTES/'MD5','MD5Text'/


提供此输出:


0xA891DB2DA259280A66FD5F35201CAB6A


什么时候


declare @h char/32/
select @h=HASHBYTES/'MD5','MD5Text'/
select @h,LEN/@h/


出口:

Ё 'sўy./ f_5" j

所以我是新的 SQL Server.

任何人都可以告诉我,请,我必须使用什么类型的数据来存储哈希 ??
已邀请:

奔跑吧少年

赞同来自:

您必须使用数据类型
binary

. 您可以使用
binary

反而
varbinary

, 因为这个功能 hash 将始终返回相同类型的相同数量的字节 hash /例如 ,
MD5

,
SHA1

等等。/. 它会减少 /次要的/ 管理变量长度的二进制列所需的开销 /
varbinary

/.

从尺寸的角度来看,您可以运行此请求来检查每种类型的长度 hash:


SELECT DATALENGTH/HASHBYTES/'MD2', 'Testing'// AS [MD2Length],
DATALENGTH/HASHBYTES/'MD4', 'Testing'// AS [MD4Length],
DATALENGTH/HASHBYTES/'MD5', 'Testing'// AS [MD5Length],
DATALENGTH/HASHBYTES/'SHA', 'Testing'// AS [SHALength],
DATALENGTH/HASHBYTES/'SHA1', 'Testing'// AS [SHA1Length],
/* 2012 only: */
DATALENGTH/HASHBYTES/'SHA2_256', 'Testing'// AS [SHA2_256Length],
DATALENGTH/HASHBYTES/'SHA2_512', 'Testing'// AS [SHA2_512Length];


他必须出来这个:


MD2Length MD4Length MD5Length SHALength SHA1Length SHA2_256Length SHA2_512Length
--------- --------- --------- --------- ---------- -------------- --------------
16 16 16 20 20 32 64

要回复问题请先登录注册