[20250410]GUID转换GUID_BASE64(补充4).txt

来源:这里教程网 时间:2026-03-03 21:50:40 作者:

[20250410]GUID转换GUID_BASE64(补充4).txt --//昨天重新写bash shell脚本,总感觉遗漏了什么,oracle内部应该有对应函数转换GUID_BASE64。 --//看了相关文档,发现使用UTL_ENCODE.BASE64_ENCODE函数,测试看看。 1.环境: SCOTT@book01p> @ver2 ============================== PORT_STRING                   : x86_64/Linux 2.4.xx VERSION                       : 21.0.0.0.0 BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production CON_ID                        : 0 PL/SQL procedure successfully completed. 2.测试: --//21c下: SYS@book> select CON_ID,DBID,CON_UID,NAME,GUID,GUID_BASE64 from V$CONTAINERs; CON_ID       DBID    CON_UID NAME     GUID                             GUID_BASE64 ------ ---------- ---------- -------- -------------------------------- ------------------------      1 1617337831          1 CDB$ROOT C8209F27C6B16005E053362EE80AE60E yCCfJ8axYAXgUzYu6ArmDgA=      2 2763294012 2763294012 PDB$SEED 1F36DBBBA2C8169BE0636538A8C04D12 Hzbbu6LIFpvgY2U4qMBNEgA=      3 1073777561 1073777561 BOOK01P  1F36F47256D41C08E0636538A8C03260 Hzb0clbUHAjgY2U4qMAyYAA= SCOTT@book01p> SELECT UTL_RAW.CAST_TO_varchar2(UTL_ENCODE.BASE64_ENCODE('1F36F47256D41C08E0636538A8C0326000')) c30 FROM dual; C30 ------------------------------ Hzb0clbUHAjgY2U4qMAyYAA= --//现在明白当时为什么不行,当时UTL_ENCODE.BASE64_ENCODE的输出是raw类型,要转换成字符串类型,结果就对了。 --//我在结尾补了2个00,不然还是结尾对不上。就是21c改变算法,加入两个0在做运算。 --//18c的情况: SYS@192.168.x.y:1521/orclcdb>  select CON_ID,DBID,CON_UID,NAME,GUID,GUID_BASE64 from V$CONTAINERs; CON_ID       DBID    CON_UID NAME     GUID                             GUID_BASE64 ------ ---------- ---------- -------- -------------------------------- ------------------------      1 2756091850          1 CDB$ROOT 64A52F53A7683286E053CDA9E80AED76 ZKUvU6doMobgU82p6Artdg==      2 1474312904 1474312904 PDB$SEED 742DCFA2CE044FDEE0558253DD747177 dC3Pos4ET97gVYJT3XRxdw==      3  115310104  115310104 ORCL     74A69DC145F5662BE0558253DD747177 dKadwUX1ZivgVYJT3XRxdw== SCOTT@book01p> SELECT UTL_RAW.CAST_TO_varchar2(UTL_ENCODE.BASE64_ENCODE('74A69DC145F5662BE0558253DD747177')) c30 FROM dual; C30 ------------------------------ dKadwUX1ZivgVYJT3XRxdw== --//完全对上。 --//反过来使用UTL_ENCODE.BASE64_DECODE解码。不过也需要将字符串变成raw类型再计算。 SCOTT@book01p> SELECT UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW('dKadwUX1ZivgVYJT3XRxdw==')) c40 FROM dual; C40 ---------------------------------------- 74A69DC145F5662BE0558253DD747177

相关推荐