SQL 方言通

首页 / 字符串

SHA2 计算 SHA-2 哈希

SHA2 计算 SHA-224、SHA-256、SHA-384 或 SHA-512 哈希,返回十六进制字符串。MaxCompute、StarRocks、Doris、Hive、Spark 和 Flink 都有 SHA2,第二个参数是位长。位长写 0 时,只有部分引擎按 256 处理。

各引擎写法 · 迁移注意事项 · 示例

各引擎写法

引擎支持写法说明依据
MaxCompute支持SHA2(expr, number)number 取 224、256、384、512 或 0,0 等同于 256。任一参数为 NULL 时返回 NULL。官方文档
Hologres不支持—Hologres 字符串函数文档中没有找到 SHA2,需要在实例中确认。待核实
StarRocks支持sha2(expr, hash_length)hash_length 取 224、256、384、512 或 0,0 等同于 256。取其他值时返回 NULL。官方文档
Doris支持SHA2(input, digest_length)digest_length 支持 224、256、384、512,必须是常量。文档没有列出 0。官方文档
Hive支持sha2(string/binary, int)Hive 1.3.0 起提供。位长取 224、256、384、512 或 0,0 等同于 256,取其他值时返回 NULL。官方文档
Spark SQL支持sha2(expr, bitLength)Spark 1.5.0 起提供。位长 0 等同于 256。官方文档
Flink SQL支持SHA2(string, hashLength)hashLength 取 224、256、384 或 512,文档没有列出 0。官方文档

迁移注意事项

示例

对手机号做 SHA-256 脱敏

MaxCompute
SELECT SHA2(phone, 256) AS phone_hash FROM users;
StarRocks
SELECT sha2(phone, 256) AS phone_hash FROM users;
Doris
SELECT SHA2(phone, 256) AS phone_hash FROM users;
Hive
SELECT sha2(phone, 256) AS phone_hash FROM users;
Spark SQL
SELECT sha2(phone, 256) AS phone_hash FROM users;
Flink SQL
SELECT SHA2(phone, 256) AS phone_hash FROM users;

同类函数

字符串:全部引擎写法对照

核对日期: · 提交勘误