HEX
描述
HEX 函数将输入参数转换为十六进制字符串表示形式。该函数是 MySQL 兼容函数,支持数字和字符串两种输入类型,分别采用不同的转换规则。
如果输入参数是数字(BIGINT类型),返回该数字的十六进制值字符串表示形式。
如果输入参数是字符串,则将字符串中每个字符(按字节)转换为对应的两位十六进制字符,然后拼接所有转换后的字符形成结果字符串。
语法
HEX(<expr>)
参数
| 参数 | 说明 |
|---|---|
<expr> | 输入参数,可以是 BIGINT 类型的数字或 VARCHAR 类型的字符串 |
返回值
返回 VARCHAR 类型,表示输入参数的十六进制表示。
转换规则:
- 数字输入:转换为对应的十六进制值(BIGINT 范围内)
- 字符串输入:每个字节转换为两位大写十六进制字符
- 负数按照二进制补码形式转换
特殊情况:
- 如果参数为 NULL,返回 NULL
- 数字 0 转换为 '0'
- 空字符串转换为空字符串
- 负数转换为 64 位二进制补码的十六进制表示
示例
- 基本数字转换
SELECT HEX(12), HEX(-1);
+---------+------------------+
| HEX(12) | HEX(-1) |
+---------+------------------+
| C | FFFFFFFFFFFFFFFF |
+---------+------------------+
- 字符串转换
SELECT HEX('1'), HEX('@'), HEX('12');
+----------+----------+-----------+
| HEX('1') | HEX('@') | HEX('12') |
+----------+----------+-----------+
| 31 | 40 | 3132 |
+----------+----------+-----------+
- 大整数转换
SELECT HEX(255), HEX(65535), HEX(16777215);
+----------+------------+----------------+
| HEX(255) | HEX(65535) | HEX(16777215) |
+----------+------------+----------------+
| FF | FFFF | FFFFFF |
+----------+------------+----------------+
- NULL 值处理
SELECT HEX(NULL);
+-----------+
| HEX(NULL) |
+-----------+
| NULL |
+-----------+
- 零值和空字符串
SELECT HEX(0), HEX('');
+--------+--------+
| HEX(0) | HEX('') |
+--------+--------+
| 0 | |
+--------+--------+
- 特殊字符
SELECT HEX(' '), HEX('\t'), HEX('\n');
+----------+----------+----------+
| HEX(' ') | HEX('\t') | HEX('\n') |
+----------+----------+----------+
| 20 | 09 | 0A |
+----------+----------+----------+
- UTF-8 多字节字符
SELECT HEX('ṭṛì'), HEX('ḍḍumai');
+------------------+----------------------+
| HEX('ṭṛì') | HEX('ḍḍumai') |
+------------------+----------------------+
| E1B9ADE1B99BC3AC | E1B88DE1B88D756D6169 |
+------------------+----------------------+
- 负数的补码表示
SELECT HEX(-128), HEX(-32768);
+------------------+------------------+
| HEX(-128) | HEX(-32768) |
+------------------+------------------+
| FFFFFFFFFFFFFF80 | FFFFFFFFFFFF8000 |
+------------------+------------------+
- 混合字符串内容
SELECT HEX('A1'), HEX('Hello!');
+-----------+----------------+
| HEX('A1') | HEX('Hello!') |
+-----------+----------------+
| 4131 | 48656C6C6F21 |
+-----------+----------------+