質問

Oracle 10gでは、SYS_GUID()をvarcharにどのように変換しますか?私は次のようなことを試みています:

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

RAWバイト[]を返します。 SQLステートメントでRAWを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では、お気づきのようにrawを受け取りません。

PL / SQLでは、To_CHARは生の値を取ります。

したがって、とにかくプロシージャを使用している場合は、変数を使用する方が簡単な場合がありますが、SQLを使用している場合は、他の回答をここに入力してください。

email = 'user@example.com'のユーザーからCAST(USER_GUID AS VARCHAR2(100))を選択します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top