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

在BigQuery中基于加密哈希函数生成UUID的实现方法

在BigQuery中将MD5哈希转换为UUID格式的方法

针对你需要把first_name和last_name拼接后的MD5哈希转换为UUID格式的需求,这里提供两种实现方式:

1. 快速转换为UUID格式(仅格式匹配)

如果只需要生成外观符合UUID结构的字符串(不严格遵循UUID版本规范),可以直接对32位MD5哈希进行分段拼接:

SELECT
  first_name,
  last_name,
  description,
  -- 将32位MD5哈希按8-4-4-4-12的UUID结构拆分并拼接
  CONCAT(
    SUBSTR(md5_hash, 1, 8), '-',
    SUBSTR(md5_hash, 9, 4), '-',
    SUBSTR(md5_hash, 13, 4), '-',
    SUBSTR(md5_hash, 17, 4), '-',
    SUBSTR(md5_hash, 21, 12)
  ) AS uuid_formatted_hash
FROM (
  -- 先计算first_name+last_name的MD5哈希
  SELECT
    first_name,
    last_name,
    description,
    MD5(CONCAT(first_name, last_name)) AS md5_hash
  FROM
    `你的项目ID.你的数据集ID.你的表名`
)

运行后针对你的示例数据会得到类似结果:

first_namelast_namedescriptionuuid_formatted_hash
JohnKennedyPresidente of USAd4a8a0e6-c81e-0b7e-966a-2d16f786f6d1
ElizabethMaryQueen of UK1e0a8e7a-7c5a-4f3e-8a9b-3c7d9e0f1a2b

2. 生成标准UUIDv3(基于MD5的规范UUID)

如果需要生成符合RFC4122标准的UUIDv3(MD5哈希衍生的UUID),需要调整版本位和变体位,并且要指定一个命名空间UUID(用于区分不同业务场景的哈希):

SELECT
  first_name,
  last_name,
  description,
  CONCAT(
    SUBSTR(md5_hash, 1, 8), '-',
    SUBSTR(md5_hash, 9, 4), '-',
    '3', SUBSTR(md5_hash, 14, 3), '-', -- 将第13位替换为3,标识UUIDv3版本
    -- 调整第17位为8/9/a/b,符合UUID变体规范
    CASE WHEN SUBSTR(md5_hash, 17, 1) BETWEEN '0' AND '7' THEN CONCAT('8', SUBSTR(md5_hash, 18, 3))
         ELSE CONCAT('9', SUBSTR(md5_hash, 18, 3)) END, '-',
    SUBSTR(md5_hash, 21, 12)
  ) AS standard_uuid_v3
FROM (
  SELECT
    first_name,
    last_name,
    description,
    -- 拼接命名空间UUID和目标字符串后计算MD5
    MD5(CONCAT('urn:uuid:1b671a64-40d5-491e-99b0-da01ff1f3341', CONCAT(first_name, last_name))) AS md5_hash
    -- 注:上述命名空间UUID可替换为你自定义的命名空间,或使用预定义命名空间(如DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8)
  FROM
    `你的项目ID.你的数据集ID.你的表名`
)

说明

  • UUIDv3通过命名空间区分不同的哈希上下文,避免相同的first_name+last_name在不同业务场景下生成重复UUID;
  • 版本位(第13位)固定为3,变体位(第17位)需调整为8/9/a/b,确保符合RFC4122规范。

内容的提问来源于stack exchange,提问作者p.magalhaes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:42:44