15

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

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

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

4

5 回答 5

21

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

VARCHAR2从到没有隐式转换RAW。这意味着该子句:

WHERE raw_column = :varchar_value

将被隐式转换为:

WHERE RAWTOHEX(raw_column) = :varchar_value

,从而使索引raw_column不可用。

采用:

WHERE raw_column = HEXTORAW(:varchar_value)

反而。

于 2009-03-02T18:55:44.940 回答
4

使用 RAWTOHEX(USER_GUID)。

于 2009-03-02T18:51:15.793 回答
3
select RAWTOHEX(USER_GUID) from user where email = 'user@example.com'
于 2010-03-04T01:06:45.853 回答
1

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

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

如您所见,在 SQL TO_CHAR 中不会采用原始​​数据。

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

因此,无论如何,如果您在一个过程中,有时使用变量会更容易,但如果您只是使用 SQL,请在此处使用其他答案。

于 2009-03-02T19:00:51.243 回答
0

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

于 2018-08-26T21:32:42.763 回答