HEX スカラー関数

HEX 関数は、値の 16 進表記を文字ストリングとして戻します。

Read syntax diagramSkip visual syntax diagramHEX(expression)

スキーマは SYSIBM です。

expression
XML 以外の組み込みデータ・タイプの、最大長 16 336 バイトの値を返す式。

この関数の結果は、OCTETS のストリング単位の文字ストリングです。 引数が NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数が NULL であれば、結果は NULL 値です。

コード・ページはセクション・コード・ページになります。

結果は、16 進数字のストリングです。 最初の 2 つは引数の最初のバイト、 次の 2 つは引数の 2 番目のバイトを表します。 以下同様です。 引数が日付/時刻値または数値である場合、 結果は引数の内部形式の 16 進表記になります。 戻される 16 進表記は、 関数が実行されるアプリケーション・サーバーによって異なる場合があります。 違いが生じる場合としては、次のような場合があります。
  • EBCDIC サーバーに対する ASCII クライアントまたは ASCII サーバーに対する EBCDIC クライアントで、 文字ストリング引数を指定して HEX 関数を実行したとき。
  • クライアント・システムとサーバー・システムとで数値のバイト・オーダーが異なる場合に、 HEX 関数に数値引数を指定したとき (場合によります)。

結果のタイプと長さは、文字ストリング引数と GRAPHIC ストリング引数のタイプ、長さ、およびストリング単位によって異なります。

表 1. 引数のデータ・タイプと長さ属性のデータ・タイプの関数としての結果のデータ・タイプ
引数のデータ・タイプ1 長さ属性2 結果データ・タイプ
CHAR(A) または BINARY(A) A<128 CHAR(A*2)
CHAR(A) または BINARY(A) A>127 VARCHAR(A*2)
VARCHAR(A)、VARBINARY(A)、CLOB(A)、または BLOB(A) A<16337 VARCHAR(A*2)
GRAPHIC(A) A<64 CHAR(A*2*2)
GRAPHIC(A) A>63 VARCHAR(A*2*2)
VARGRAPHIC(A) または DBCLOB(A) A<8169 VARCHAR(A*2*2)
CHAR(A CODEUNITS32) A<64 VARCHAR(A*4*2)
VARCHAR(A CODEUNITS32) または CLOB(A CODEUNITS32) A<4085 VARCHAR(A*4*2)
GRAPHIC(A CODEUNITS32) A<64 VARCHAR(A*2*2*2)
VARGRAPHIC(A CODEUNITS32) または DBCLOB(A CODEUNITS32) A<4085 VARCHAR(A*2*2*2)
1. ストリング単位が指定されない場合、データ・タイプのストリング単位は CODEUNITS32ではありません。
最大長さ属性は、データ・タイプ制限または入力引数用の 16336 バイトの限度を反映します。

以下の例では、 AIX® または Linux® 上でデータベース・アプリケーション・サーバーを使用することを想定しています。

  • 例 1: DEPARTMENT 表を使用して、ホスト変数 HEX_MGRNO (char(12)) に、「PLANNING」 部門 (DEPTNAME) の管理者番号 (MGRNO) の 16 進表記を設定します。
       SELECT HEX(MGRNO)
         INTO :HEX_MGRNO
         FROM DEPARTMENT
         WHERE DEPTNAME = 'PLANNING'
    サンプル表を使用する場合、HEX_MGRNO は 303030303230 に設定されます (文字値は 000020)。
  • 例 2: COL_1 が、データ・タイプ char(1)、値「B」の列であるとします。 英字「B」の 16 数表記は X'42' です。 HEX(COL_1)は 2 バイトの長さのストリング "42" を戻します。
  • 例 3: COL_3 が、データ・タイプ decimal(6,2)、値 40.1 の列であるとします。 10 進数値 40.1 の内部表記に HEX 関数を適用した結果は、8 バイトの長さのストリング 0004010C になります。