在oracle 10g中,如何将SYS_GUID()转换为varchar?我正在尝试类似的事情:
select USER_GUID from user where email = 'user@example.com'
返回RAW字节[]。是否可以使用函数将RAW转换为SQL语句中的VARCHAR2?
答案 0 :(得分:19)
将此值与HEXTORAW(varchar2)
列进行比较时,请不要忘记使用RAW
。
VARCHAR2
到RAW
没有隐含的转换。这意味着这个条款:
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'