在Oracle中创建UUID

时间:2018-07-17 09:10:57

标签: oracle uuid

我需要以xxxxxxxxxxxx-4xxx-yxxx-xxxxxxxxxxxx之类的格式创建UUID版本4。 (x =任何十六进制字符(仅小写); y是8、9,a或b之一; 4是静态)

对我而言,最好的解决方案是在我的Oracle数据库中。经过研究后,我发现SYS_GUID()可以作为解决方案:

select regexp_replace(rawtohex(sys_guid()), '([A-F0-9]{8})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{12})', '\1-\2-\3-\4-\5') as UUID from dual;

但是结果不是我所期望的:

UUID
------------------------------------
712EE4F7-823E-AD73-E053-8E3A220A3EFB

因此在我的示例中,位置13处的“ 4”和位置17处的“ y”是不正确的。还有其他/更好的方法来创建UUID,或者SYS_GUID为什么返回其他格式?

0 个答案:

没有答案