16 進表記文字列を RAW に、RAW を 16進表記文字列に変換

HEXTORAW ( string )
return [ RAW ]


- 16 進数で表記された文字列式を RAW 型にして戻す。


RAWTOHEX ( raw )
RAWTONHEX ( raw )
return [ VARCHAR2 | NVARCHAR2 ]


- RAW 型 を 16 進数 文字列に変換して戻す。

HEXTORAW 関数の内容
16 進数で記述された文字列式 string を RAW 型に変換する。
RAWTOHEX、RAWTONHEX 関数の内容
RAW 型を 16 進表記の文字列にする。RAWTOHEX の場合にはデータベースキャラクタセット文字列、RAWTONHEX の場合には各国語キャラクタセット文字列を戻す。
注意
RAWTOHEX の引数は RAW 型であることを使用者が確認しなければ正しい結果は得られない。PL/SQL の場合には BLOB も許される。
また、TO_RAW という関数もあるにはあるが BLOB を RAW に変換するという内容で、利用目的が異なる上、マニュアルに記載されていない関数である。
HEXTORAW 使用例
SQL> select hex, dump(hextoraw(hex), 16) hex_raw from hextoraw_sample;
HEX HEX_RAW
-------------------- ------------------------------------
0000 Typ=23 Len=2: 0,0
FFFF Typ=23 Len=2: ff,ff
01020400680a0c0e10 Typ=23 Len=9: 1,2,4,0,68,a,c,e,10
Typ=23 とは ⇒ データ型のタイプコード
SQL> select utl_raw.cast_to_varchar2(HEXTORAW('82a0')) char_c from dual;
CHAR_C
----------------------------------------------------------------------------
あ
SQL> select utl_raw.cast_to_nvarchar2(HEXTORAW('3042')) nchar_c from dual;
NCHAR_C
----------------------------------------------------------------------------
あ
RAWTOHEX の推奨されない使用例
数値型や文字列型を指定してもエラーにはならず、大抵は正しい結果にならない。(想像通りの結果ではあるが)
SQL> select RAWTOHEX(1) num, RAWTOHEX(1d) d,
2 RAWTOHEX('1') str, RAWTOHEX(chr(1)) str2 from dual;
NUM D STR STR2
-------- -------------------- ---- ----
C102 BFF0000000000000 31 01
バイナリ・文字列変換に関連する内容
SQL - HEXTORAW,RAWTOHEX 関連