メインコンテンツまでスキップ
バージョン: 26.x

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 |
+---------------+----------------------+
  1. NULL処理の比較
SELECT UNHEX(NULL), UNHEX_NULL(NULL);
+-------------+-----------------+
| UNHEX(NULL) | UNHEX_NULL(NULL) |
+-------------+-----------------+
| | NULL |
+-------------+-----------------+
  1. UTF-8文字デコード
SELECT UNHEX('E4B8AD'), UNHEX('E69687');
+-----------------+-----------------+
| UNHEX('E4B8AD') | UNHEX('E69687') |
+-----------------+-----------------+
| 中 | 文 |
+-----------------+-----------------+
  1. 16進数エンコード・デコードサイクル検証
SELECT UNHEX(HEX('Hello')), UNHEX(HEX('Test123'));
+---------------------+------------------------+
| UNHEX(HEX('Hello')) | UNHEX(HEX('Test123')) |
+---------------------+------------------------+
| Hello | Test123 |
+---------------------+------------------------+

Keywords

UNHEX, UNHEX_NULL, HEX