如何将SYS_GUID()转换为varchar?

时间:2009-03-02 18:49:35

标签: oracle guid

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

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

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

5 个答案:

答案 0 :(得分:19)

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

VARCHAR2RAW没有隐含的转换。这意味着这个条款:

WHERE raw_column = :varchar_value

将被非法转换为:

WHERE RAWTOHEX(raw_column) = :varchar_value

,从而使raw_column上的索引无法使用。

使用:

WHERE raw_column = HEXTORAW(:varchar_value)

代替。

答案 1 :(得分:4)

使用RAWTOHEX(USER_GUID)。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

如果我错了,请不要使用mod-1。我要从记忆中走出来,所以这是一个免责声明来验证。

TO_CHAR在SQL和PL / SQL之间实际上是不同的。

在SQL中,TO_CHAR不会像你发现的那样采用原始的。

在PL / SQL中,To_CHAR将采用原始值。

因此,如果您正在使用某个过程,有时使用变量会更容易,但如果您只是使用SQL,请在此处查看其他答案。

答案 4 :(得分:0)

select CAST (USER_GUID AS VARCHAR2(100)) from user where email = 'user@example.com'