在 oracle 10g 中,如何将 SYS_GUID() 转换为 varchar?我正在尝试类似的东西:
select USER_GUID from user where email = 'user@example.com'
它返回 RAW 字节 []。是否可以在 SQL 语句中使用函数将 RAW 转换为 VARCHAR2?
HEXTORAW(varchar2)
将此值与RAW
列进行比较时不要忘记使用。
VARCHAR2
从到没有隐式转换RAW
。这意味着该子句:
WHERE raw_column = :varchar_value
将被隐式转换为:
WHERE RAWTOHEX(raw_column) = :varchar_value
,从而使索引raw_column
不可用。
采用:
WHERE raw_column = HEXTORAW(:varchar_value)
反而。
使用 RAWTOHEX(USER_GUID)。
select RAWTOHEX(USER_GUID) from user where email = 'user@example.com'
如果我错了,请不要 mod-1。我从记忆中去,所以这是一个免责声明来验证。
TO_CHAR 在 SQL 和 PL/SQL 之间实际上是不同的。
如您所见,在 SQL TO_CHAR 中不会采用原始数据。
在 PL/SQL 中 To_CHAR 将采用原始值。
因此,无论如何,如果您在一个过程中,有时使用变量会更容易,但如果您只是使用 SQL,请在此处使用其他答案。
select CAST (USER_GUID AS VARCHAR2(100)) from user where email = 'user@example.com'