メインコンテンツまでスキップ
に最終更新

UNHEX

説明​

UNHEX 関数は十六進数の文字列を元の文字列に戻す、HEX 関数の逆の処理を行います。この関数は十六進数の文字(0-9、A-F、a-f)を二文字ずつ一バイトに変換します。UNHEX_NULL 関数も同様に動作しますが、無効な入力に対しては NULL を返します。これらの関数は、バイナリデータ、暗号化されたデータ、または十六進数で表す必要のあるデータを扱う際に役立ちます。

ヒント

この関数はバージョン 3.0.6 以降でサポートされています。

構文​

UNHEX(<str>)

パラメータ​

パラメータ説明
<str>十六進数の文字列

戻り値​

十六進数から復号した元の文字列を表す VARCHAR 型の値を返します。

復号規則:

  • 使用できる文字の範囲: 0-9、a-f、A-F
  • 十六進数の文字二文字を一バイトに変換します
  • 結果に表示できない文字が含まれる場合があります

特殊なケース(UNHEX):

  • 入力が NULL の場合、NULL を返します
  • 文字列の長さが 0 または奇数の場合、空文字列を返します
  • 十六進数以外の文字が含まれる場合、空文字列を返します

特殊なケース(UNHEX_NULL):

  • 入力が NULL の場合、NULL を返します
  • 文字列の長さが 0 または奇数の場合、NULL を返します
  • 十六進数以外の文字が含まれる場合、NULL を返します

例​

select unhex('@');
+------------+
| unhex('@') |
+------------+
| |
+------------+
select unhex_null('@');
+-----------------+
| unhex_null('@') |
+-----------------+
| NULL |
+-----------------+
select unhex('41');
+-------------+
| unhex('41') |
+-------------+
| A |
+-------------+
select unhex('4142'), unhex('48656C6C6F');
+---------------+----------------------+
| unhex('4142') | unhex('48656C6C6F') |
+---------------+----------------------+
| AB | Hello |
+---------------+----------------------+
  1. NULL 値の扱いの比較
SELECT UNHEX(NULL), UNHEX_NULL(NULL);
+-------------+-----------------+
| UNHEX(NULL) | UNHEX_NULL(NULL) |
+-------------+-----------------+
| NULL | NULL |
+-------------+-----------------+
  1. UTF-8 文字の復号
SELECT UNHEX('E4B8AD'), UNHEX('E69687');
+-----------------+-----------------+
| UNHEX('E4B8AD') | UNHEX('E69687') |
+-----------------+-----------------+
| 中 | 文 |
+-----------------+-----------------+
  1. 十六進数への符号化と復号の往復確認
SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));
+---------------------+------------------------+
| UNHEX(HEX('Hello')) | UNHEX(HEX('Test123')) |
+---------------------+------------------------+
| Hello | Test123 |
+---------------------+------------------------+

キーワード​

UNHEX, UNHEX_NULL, HEX