對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函數屬於其他函數,更多其他業務情境的函數請參見其他函數。