将Raw(16)转换为GUID

时间:2014-01-13 21:19:01

标签: sql oracle guid

有没有办法创建一个SQL脚本,将Oracle RAW(16)列表转换为GUID

我需要找到一种简单快捷的方法来转换大约1400万件物品。我已将列表导出到多个分隔文件,并且我可以将此数据导入到模式中。

1 个答案:

答案 0 :(得分:5)

RAW(16)基本上 GUID:它是一个16字节的十六进制值。所以一种选择就是不管它。 Oracle将隐式地在字符和十六进制之间进行转换,因此,如果您要查找原始值为FE2BF132638011E3A647F0DEF1FEB9E8的行,则可以在查询中使用字符串:

SELECT *
FROM myTable
WHERE myRaw16Column = 'FE2BF132638011E3A647F0DEF1FEB9E8';

如果您想将转化的RAW(16)更改为CHAR(32),可以使用RAWTOHEX作为@tbone建议。

INSERT INTO NewTable (myGUIDColumn, ...)
  SELECT RAWTOHEX(myRawColumn), ...
  FROM OldTable

如果你想让它成为CHAR(36)短划线格式的GUID,事情会很快变得复杂:

INSERT INTO NewTable (myGUIDColumn, ...)
  SELECT REGEXP_REPLACE(myRaw16Column, '(.{8})(.{4})(.{4})(.{4})(.*)', '\1-\2-\3-\4-\5'), ...
  FROM OldTable