【问题标题】:How to insert an existing GUID into Oracle RAW(16) field in a script如何将现有 GUID 插入脚本中的 Oracle RAW(16) 字段
【发布时间】:2012-05-16 22:41:24
【问题描述】:

我有一个 sql server 脚本,它将已知的固定 guid 值插入到表中。它看起来像:

INSERT INTO MyTable (ID)
VALUES ('BBD098BF-58F0-4A84-90C2-F806D6D06061')

请注意,guid 是人类可读的形式。 由于 ID 是唯一标识符,sql server 了解如何将字符串转换为 guid 数据类型。

我需要为 Oracle 制作相同的脚本,ID 是 RAW(16) 类型。直接使用脚本是行不通的,因为 Oracle 将字符串解释为二进制文件,它应该是一些“其他”字符串,是正确二进制块的字符串表示。

有谁知道如何将人类可读的 sql server 字符串转换为 Oracle 所需的字符串?

到目前为止,我只能考虑在 .net 代码中将 guid 保存到 Oracle,而不是在 oracle 脚本中进行选择以获取字符串。但这太疯狂了。

谢谢!

【问题讨论】:

  • 你可以使用HEXTORAW('BBD098BF-58F0-4A84-90C2-F806D6D06061' ),但我不确定我理解你想要什么
  • 我在 sql 数据库中有一些具有固定已知 guid 的记录,但我的项目必须同时支持 sql server 和 oracle。 sql server 数据库和 Oracle 中的 guid 必须相同。这样相同的 .net 代码就可以从每个数据库中检索记录。我的猜测是 HEXTORAW 会将字符串视为简单的二进制文件,并且两个数据库中的 guid 会有所不同。
  • @ElDog: hextoraw() 如果在调用之前删除-,它应该可以正常工作。

标签: sql sql-server oracle


【解决方案1】:

据此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')

【讨论】:

  • 只是古玩:需要什么切换而不只是调用 hextoraw(replace(guid,'-',''))
猜你喜欢
  • 2014-10-30
  • 2021-10-23
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多