在oracle 10g中,如何将SYS_GUID()转换为varchar?我正在尝试类似的事情:

select USER_GUID from user where email = 'user@example.com'

返回RAW字节[]。是否可以使用函数将RAW转换为SQL语句中的VARCHAR2?

有帮助吗?

解决方案

将此值与 RAW 列进行比较时,请不要忘记使用 HEXTORAW(varchar2)

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,请在此处查看其他答案。

从用户中选择CAST(USER_GUID AS VARCHAR2(100)),其中email ='user@example.com'

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top