对value1、value2进行散列运算得到一个Hash值。
命令格式
当MaxCompute项目为Hive兼容模式时,命令格式如下。
int hash(<value1>, <value2>[, ...]);
当MaxCompute项目非Hive兼容模式时,命令格式如下。
bigint hash(<value1>, <value2>[, ...]);
参数说明
value1、value2:必填。待计算Hash值的参数,各参数的类型可以不相同。Hive及非Hive兼容模式下支持的数据类型不相同,具体如下:
Hive兼容模式:TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL、BOOLEAN、STRING、CHAR、VARCHAR、DATETIME、DATE。
非Hive兼容模式:BIGINT、DOUBLE、BOOLEAN、STRING、DATETIME。
说明
对于两个相同的输入,返回的Hash值一定是相同的。但是反过来,如果两个Hash值相同,并不保证输入值一定相等(可能出现哈希碰撞)。
使用示例
示例1:计算相同数据类型的输入参数的Hash值。命令示例如下。
--返回66。 select hash(0, 2, 4);
示例2:计算不同数据类型的输入参数的Hash值。命令示例如下。
--返回97。 select hash(0, 'a');
示例3:任一输入参数为空或NULL。命令示例如下。
--返回0。 select hash(0, null); --返回0。 select hash(0, '');
相关函数
HASH函数属于其他函数,更多其他业务场景的函数请参见其他函数。