使用 SQL 从 Oracle 的 RAW(16) 转换为 .NET 的 GUID

Convert from Oracle's RAW(16) to .NET's GUID using SQL

如何在 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

如果您正在使用 * 并且还选择了其他列,那么您必须在 * 前加上 table 名称或别名(并且您可能需要 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<>fiddle here