You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Databricks SQL中将MD5哈希结果转换为整数?

在Azure Databricks SQL中将MD5哈希转换为整数的解决方案

直接用CAST(MD5('text') AS INT)返回NULL的原因很明确:MD5函数输出的是32位十六进制字符串,既超出了INT类型的取值范围,也无法被CAST直接识别为十进制整数,导致转换失败。

下面是几种可行的解决方法:

方法1:转换为64位整数(BIGINT)

先用UNHEX把十六进制字符串转成二进制数据,再CAST为BIGINT(会取哈希值的低64位):

SELECT CAST(UNHEX(MD5('text')) AS BIGINT) AS md5_bigint;

方法2:保留完整128位哈希值(DECIMAL类型)

如果需要完整保存MD5的128位信息,可以将二进制数据转换为DECIMAL(38,0)类型(该类型能容纳128位十六进制对应的最大十进制数值):

SELECT CAST(UNHEX(MD5('text')) AS DECIMAL(38,0)) AS md5_full_decimal;

方法3:手动转换十六进制为十进制

使用CONV函数直接将十六进制字符串转为十进制数值,还可以按需截取部分哈希值:

-- 截取MD5结果的前16位转BIGINT
SELECT CONV(SUBSTRING(MD5('text'), 1, 16), 16, 10) AS md5_part_bigint;

-- 完整32位十六进制转DECIMAL
SELECT CONV(MD5('text'), 16, 10) AS md5_full_decimal;

注意事项

  • BIGINT仅能存储64位数值,会自动截断MD5哈希的高64位;
  • 使用CONV时,若转换后的数值超出目标类型范围,仍会返回NULL,需确保类型匹配;
  • DECIMAL(38,0)是能容纳完整MD5哈希值的最小DECIMAL类型,无需调整精度。

内容的提问来源于stack exchange,提问作者bjnr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:55:10