我有一个sql server脚本,它将已知的固定guid值插入表中。它看起来像:
INSERT INTO MyTable (ID)
VALUES ('BBD098BF-58F0-4A84-90C2-F806D6D06061')
请注意,guid是人类可读的形式。 由于ID是uniqueidentifier,因此sql server理解如何将字符串转换为guid数据类型。
我需要为Oracle创建相同的脚本,ID是RAW(16)类型。直接使用脚本不起作用,因为Oracle将字符串解释为二进制,它应该是一些“其他”字符串,正确的二进制块的字符串表示。
有没有人知道将人类可读的sql server字符串转换为Oracle所需的字符串的方法?
到目前为止,我只能考虑在.net代码中将guid保存到Oracle,而不是在oracle脚本中使用select来获取字符串。但这太疯狂了。
谢谢!
答案 0 :(得分:4)
根据这个link
Sqlserver会反转3个第一部分,因此您需要执行以下操作:
hextoraw(substr(guid,7,2)||
substr(guid,5,2)||
substr(guid,3,2)||
substr(guid,1,2)||
substr(guid,12,2)||
substr(guid,10,2)||
substr(guid,17,2)||
substr(guid,15,2)||
substr(guid,20,4)||
substr(guid,25,12)
)
(guid就像'BBD098BF-58F0-4A84-90C2-F806D6D06061')