• ベストアンサー

16進数の指定の仕方

HEXTORAWを使って「817c」を-に変換したいのですが 指定の仕方が間違っているとエラーが出てしまいます。 HEXTORAW('817C')とすると 817Cと表示されます。。。 HEXTORAW()内の指定の仕方はどうすればよいのでしょうか? どなたかご教授を!! お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.1

HEXTORAW('817C') で使用方法はあっています。 ただ、817C は RAWなので本来は表示できません。 817C が表示されるのは、使用されている FEP が変換しているものです。 やりたいことは、以下の記述でも可能です。 UTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('817C')) 同等な関数で CHR がありますが、こちらは入力が数値ですので 別途 非標準の16進10進変換関数が必要です。 面倒になりますので、こちらは省略します。

maryoha
質問者

お礼

できました!! ありがとうございます。 ちなみに RAWというのはなんでしょうか? スミマセン。教えていただけると幸いです。

その他の回答 (1)

  • MZ-80B
  • ベストアンサー率56% (46/81)
回答No.2

RAW とはバイナリ・データ(バイト列)です。 CHAR, VARCHAR2 型はクライアントの漢字コード(キャラクタセット)により 自動で漢字(キャラクタセット)変換を行いますが、 RAW はバイナリデータですので変換を行いません。 '817c'は Shift_JISでは (―)に該当しますが、EUC-JPでは異なる文字に該当し文字化けになります。 すなわち、文字データをキャラクタコード('817c'など) や RAW で取り扱うということはマルチプラットフォームに対応できないということになってしまいます。 オンラインマニュアルをもっていないのでしたら OTN で入手することをお勧めします。 参考URL: SQLリファレンス 「Oracle SQL の基本要素 データ型」(10g 用マニュアル)

参考URL:
http://otn.oracle.co.jp/document/products/oracle10g/101/doc_cd/index.htm

関連するQ&A