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