【问题标题】:Convert from Oracle's RAW(16) to .NET's GUID using SQL使用 SQL 将 Oracle 的 RAW(16) 转换为 .NET 的 GUID
【发布时间】:2021-12-17 10:03:53
【问题描述】:

如何在 MSSQL 中将 Oracle Raw 16 转换为 GUID?以下在 Oracle DB SQL 控制台中不起作用,

select hextoraw(Raw16Column), *
from OracleDb.PRODUCTS
order by PRODUCTS_ID desc
fetch next 20 rows only

错误:

[42000][936] ORA-00936: missing expression Position: 23

资源:Convert from Oracle's RAW(16) to .NET's GUID

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions064.htm

【问题讨论】:

标签: sql oracle oracle11g


【解决方案1】:

如果您使用* 并且还选择其他列,那么您必须在* 前面加上表名或别名(您可能需要RAWTOHEX 而不是HEXTORAW):

select p.*,
       RAWTOHEX(raw16column)
from   PRODUCTS p
order by PRODUCTS_ID desc
fetch next 20 rows only

如果你想convert it to a GUID with the correct endianess 那么:

select p.*,
       SUBSTR(raw16column,7,2)
       ||SUBSTR(raw16column,5,2)
       ||SUBSTR(raw16column,3,2)
       ||SUBSTR(raw16column,1,2)
       ||'-'
       ||SUBSTR(raw16column,11,2)
       ||SUBSTR(raw16column,9,2)
       ||'-'
       ||SUBSTR(raw16column,15,2)
       ||SUBSTR(raw16column,13,2)
       ||'-'
       ||SUBSTR(raw16column,17,16)
         AS guid
from   PRODUCTS p
order by PRODUCTS_ID desc
fetch next 20 rows only

db小提琴here

【讨论】:

    猜你喜欢
    • 2014-10-30
    • 2011-11-09
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2015-05-21
    • 2012-05-16
    • 2013-12-26
    • 2016-01-27
    相关资源
    最近更新 更多