You need to enable JavaScript to run this app. PostgreSQL中是否存在可将RFC 4122 UUID转换为ISO 8824 OID的函数
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中是否存在可将RFC 4122 UUID转换为ISO 8824 OID的函数

PostgreSQL 中UUID转合规2.25前缀OID的实现说明

PostgreSQL核心功能没有内置直接完成这类转换的原生函数,可通过简单的自定义逻辑完全匹配要求的转换规则完成转换。

核心转换规则

这类转换需要严格遵循ISO 8824下2.25节点的对象标识符规范:

  • 输出OID固定使用2.25.作为公共前缀
  • 后缀为完整128位UUID对应的单个无符号大整数的十进制字符串,不对UUID做分段拆分,整体作为单个整数做直接编码
  • 转换示例:输入UUID值 f81d4fae-7dec-11d0-a765-00a0c91e6bf6,输出对应标准OID为 2.25.329800735698586629295641978511506172918

可直接落地的实现方案

PostgreSQL的任意精度numeric数值类型可完整容纳128位无符号整数的全部取值范围,通过SQL自定义函数即可实现合规转换,函数定义如下:

CREATE OR REPLACE FUNCTION uuid_to_oid(uuid_val uuid)
RETURNS text
LANGUAGE sql
IMMUTABLE
PARALLEL SAFE
AS $$
SELECT '2.25.' || (
    -- 移除UUID格式中的连字符,拼接为连续十六进制字符串,转为128位位值后转换为十进制大整数
    ('x' || replace(uuid_val::text, '-', ''))::bit(128)::numeric
)::text;
$$;

效果验证

调用函数传入示例UUID值:
SELECT uuid_to_oid('f81d4fae-7dec-11d0-a765-00a0c91e6bf6'::uuid);
输出结果与标准OID值完全一致,符合格式要求。

合规性说明

转换逻辑参考了对象标识符注册体系中2.25节点的使用约定、DICOM标准中基于UUID派生全局唯一标识的相关规范,生成的OID不存在注册冲突风险。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 15:45:10