HASH

value1value2进行散列运算得到一个Hash值。

命令格式

  • 当MaxCompute项目为Hive兼容模式时,命令格式如下。

    int hash(<value1>, <value2>[, ...]);
  • 当MaxCompute项目非Hive兼容模式时,命令格式如下。

    bigint hash(<value1>, <value2>[, ...]);

参数说明

value1value2:必填。待计算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函数属于其他函数,更多其他业务场景的函数请参见其他函数