有没有办法创建一个SQL
脚本,将Oracle的列表转换RAW(16)
为GUID
?
我需要找到一种简单快捷的方法来转换大约1400万件物品.我已将列表导出到多个分隔文件,并且我可以将此数据导入到模式中.
A 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