Oracleでは、RAWデータ型はバイナリ値の格納に適しています。
バイナリデータを格納するために文字データ型を使用する場合の問題は、値が文字セット変換の対象となることです。 。
クライアントの文字セットがデータベースの文字セットと一致しない場合、値は変換の対象になります。 (つまり、あるエンコーディングのバイナリ値は特定の文字を表しますが、その文字は別の文字セットの別のバイナリ値で表すことができます。
文字データ型を使用すると、Oracleはエンコードされたバイナリ値ではなく「文字」値を保持します。
文字(CHARやVARCHAR2など)データ型を使用してバイナリ値を格納する場合は、バイナリ値をプレーンテキストとしてエンコードし、エンコードされた値を格納および取得する必要があります。 2つの一般的なバイナリからテキストへのエンコーディングは16進数とbase64(uuencode)です。
Oracleには、バイナリ(RAWデータ型)を16進文字列(VARCHAR2データ型)としてエンコードおよびデコードするための組み込み関数RAWTOHEXおよびHEXTORAWが用意されています。