SQL 方言通

首页 / 字符串

MD5 计算字符串的 MD5 值

MD5(str) 返回 32 位十六进制字符串,输入为 NULL 时返回 NULL。七个引擎都同名支持,同一个字符串在各引擎算出的结果相同。差异在能否直接传数字、二进制,以及多列一起算时如何处理 NULL。

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

各引擎写法

引擎支持写法说明依据
MaxCompute支持MD5(str)str 为 STRING。BIGINT、DOUBLE、DECIMAL 和 DATETIME 会隐式转换成 STRING,其他类型报错。输入为 NULL 时返回 NULL。官方文档
Hologres支持MD5(str)参数和返回值都是 TEXT,结果是十六进制形式。官方文档
StarRocks支持MD5(expr)expr 为 VARCHAR,返回 32 位十六进制的 VARCHAR,输入为 NULL 时返回 NULL。对多个字符串一起算可以用 md5sum。官方文档
Doris支持MD5(input)接受字符串和二进制类型。文档示例中内容相同的 VARBINARY 和 VARCHAR 结果相同,NULL 返回 NULL。官方文档已实测 4.1.5
Hive支持md5(string/binary)Hive 1.3.0 起提供,返回 32 位十六进制字符串,参数为 NULL 时返回 NULL。官方文档已实测 4.2.1
Spark SQL支持md5(expr)Spark 1.5.0 起提供,返回十六进制字符串。官方文档
Flink SQL支持MD5(string)返回 32 位十六进制字符串,参数为 NULL 时返回 NULL。官方文档已实测 2.3.0

迁移注意事项

示例

计算字符串的 MD5 值

MaxCompute
SELECT MD5('abc');  -- 900150983cd24fb0d6963f7d28e17f72
Hologres
SELECT MD5('abc');  -- 900150983cd24fb0d6963f7d28e17f72
StarRocks
SELECT MD5('abc');  -- 900150983cd24fb0d6963f7d28e17f72
Doris
SELECT MD5('abc');  -- 900150983cd24fb0d6963f7d28e17f72
Hive
SELECT md5('abc');  -- 900150983cd24fb0d6963f7d28e17f72
Spark SQL
SELECT md5('abc');  -- 900150983cd24fb0d6963f7d28e17f72
Flink SQL
SELECT MD5('abc');  -- 900150983cd24fb0d6963f7d28e17f72

多列拼接后计算整行哈希,NULL 先替换成空字符串

MaxCompute
SELECT id, MD5(CONCAT_WS('|', COALESCE(name, ''), COALESCE(phone, ''))) AS row_hash FROM users;
Hologres
SELECT id, MD5(CONCAT_WS('|', COALESCE(name, ''), COALESCE(phone, ''))) AS row_hash FROM users;
StarRocks
SELECT id, MD5(CONCAT_WS('|', COALESCE(name, ''), COALESCE(phone, ''))) AS row_hash FROM users;
Doris
SELECT id, MD5(CONCAT_WS('|', COALESCE(name, ''), COALESCE(phone, ''))) AS row_hash FROM users;
Hive
SELECT id, md5(concat_ws('|', coalesce(name, ''), coalesce(phone, ''))) AS row_hash FROM users;
Spark SQL
SELECT id, md5(concat_ws('|', coalesce(name, ''), coalesce(phone, ''))) AS row_hash FROM users;
Flink SQL
SELECT id, MD5(CONCAT_WS('|', COALESCE(name, ''), COALESCE(phone, ''))) AS row_hash FROM users;

同类函数

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

核对日期: · 提交勘误