質問
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))を選択します
所属していません StackOverflow