UNHEX
説明
UNHEX関数は16進文字列を元の文字列に変換し、HEX関数の逆操作として機能します。この関数は16進文字2文字(0-9、A-F、a-f)を1バイトに変換します。UNHEX_NULL関数は同様に動作しますが、無効な入力に遭遇した場合、空文字列ではなくNULLを返します。これらの関数はバイナリデータ、暗号化データ、または16進表現が必要なデータを処理する際に有用です。
ヒント
この関数はバージョン3.0.6以降でサポートされています。
構文
UNHEX(<str>)
パラメータ
| Parameter | デスクリプション |
|---|---|
<str> | 16進数の文字列 |
Return Value
VARCHAR型を返します。16進数からデコードされた元の文字列を表します。
デコードルール:
- 受け入れ可能な文字範囲: 0-9, a-f, A-F
- 2文字の16進数文字が1バイトに変換されます
- 結果には印刷不可能な文字が含まれる場合があります
特殊ケース (UNHEX):
- 入力がNULLの場合、空文字列を返します
- 文字列の長さが0または奇数の場合、空文字列を返します
- 16進数以外の文字が含まれる場合、空文字列を返します
特殊ケース (UNHEX_NULL):
- 入力がNULLの場合、NULLを返します
- 文字列の長さが0または奇数の場合、NULLを返します
- 16進数以外の文字が含まれる場合、NULLを返します
Examples
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 |
+-------------+-----------------+
- UTF-8文字デコード
SELECT UNHEX('E4B8AD'), UNHEX('E69687');
+-----------------+-----------------+
| UNHEX('E4B8AD') | UNHEX('E69687') |
+-----------------+-----------------+
| 中 | 文 |
+-----------------+-----------------+
- 16進数エンコード・デコードサイクル検証
SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));
+---------------------+------------------------+
| UNHEX(HEX('Hello')) | UNHEX(HEX('Test123')) |
+---------------------+------------------------+
| Hello | Test123 |
+---------------------+------------------------+
Keywords
UNHEX, UNHEX_NULL, HEX