哈希()函数

hash()函数返回输入数据的 128 位、160 位或 256 位散列,具体取决于所选算法。

该函数提供2128-2256 个不同的返回值,用于加密目的。 对于两个不同的输入,函数几乎不会产生相同的输出。

在使用 "hash()函数之前,请注意以下行为:
  • 在执行计算时,"hash()函数通常比 "hash4()或 "hash8()函数慢得多。 此外,"hash()函数返回一个 16 - 32 字节的二进制 varchar 值;比较二进制 varchar 值比比较整数值需要更长的时间,因此会增加查询运行时间。 如果需要加快散列生成和比较的速度,或者只需要一个简单的单向查找函数,请使用 "hash4()或 "hash8()函数,而不是 "hash()函数。
  • 带有来自 "hash()函数的哈希值的列不能进行区域映射,也不能使用其他Netezza Performance Server查询性能技术。

语法

hash()函数的语法如下:
varchar = hash(varchar data [, int algorithm]);
nvarchar = hash(nvarchar data [, int algorithm]);

data值指定要散列的 varchar 或 nvarchar 值。

algorithm值是一个整数代码,默认为 0。 下表列出了可用的算法和哈希值的大小:

表 1. 加密散列支持的算法
代码 描述 结果
0 MD5 128 位散列
1 SHA-1 160 位散列
2 SHA-2 256 位散列

MD5算法和安全散列算法 (SHA) 是由MD4 演变而来的信息摘要算法。 SHA 散列函数是美国国家安全局(NSA)为提供强大的加密散列功能而努力的成果。

重要:要处理 nvarchar 值,应使用 "hash_nvarchar()函数而不是 "hash()函数。 hash_nvarchar()函数为输入的 nvarchar 数据返回一个 varchar 值。 为了与早期版本和结果兼容,"hash()函数仍然保留,但存储 "hash('NVARCHAR')函数值的表和视图在加载和生成统计运算时可能会遇到问题。

退货

函数返回散列数据。 返回类型是一个 16 - 32 字节的二进制 varchar 值。

示例

select hash('Netezza',0);
       HASH
------------------
Ã
®dïO=±NEÂ
ÂÂÃ
(1 row)