Oracle 10g では、SYS_GUID() を varchar にどのように変換しますか? 私は次のようなことを試みています:
select USER_GUID from user where email = 'user@example.com'
RAW バイト [] を返します。関数を使用して、SQL ステートメントで RAW を VARCHAR2 に変換することは可能ですか?
この値を列HEXTORAW(varchar2)
と比較するときに使用することを忘れないでください。RAW
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 を使用しているだけの場合は、ここで他の回答を使用してください。