に最終更新
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 |
+---------------+----------------------+
- NULL 値の扱いの比較
SELECT UNHEX(NULL), UNHEX_NULL(NULL);
+-------------+-----------------+
| UNHEX(NULL) | UNHEX_NULL(NULL) |
+-------------+-----------------+
| NULL | NULL |
+-------------+-----------------+
- UTF-8 文字の復号
SELECT UNHEX('E4B8AD'), UNHEX('E69687');
+-----------------+-----------------+
| UNHEX('E4B8AD') | UNHEX('E69687') |
+-----------------+-----------------+
| 中 | 文 |
+-----------------+-----------------+
- 十六進数への符号化と復号の往復確認
SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));
+---------------------+------------------------+
| UNHEX(HEX('Hello')) | UNHEX(HEX('Test123')) |
+---------------------+------------------------+
| Hello | Test123 |
+---------------------+------------------------+
キーワード
UNHEX, UNHEX_NULL, HEX