跳到主要内容

HEX

描述

HEX 函数将输入参数转换为十六进制字符串表示形式。该函数是 MySQL 兼容函数,支持数字和字符串两种输入类型,分别采用不同的转换规则。

如果输入参数是数字(BIGINT类型),返回该数字的十六进制值字符串表示形式。

如果输入参数是字符串,则将字符串中每个字符(按字节)转换为对应的两位十六进制字符,然后拼接所有转换后的字符形成结果字符串。

语法

HEX(<expr>)

参数

参数说明
<expr>输入参数,可以是 BIGINT 类型的数字或 VARCHAR 类型的字符串

返回值

返回 VARCHAR 类型,表示输入参数的十六进制表示。

转换规则:

  • 数字输入:转换为对应的十六进制值(BIGINT 范围内)
  • 字符串输入:每个字节转换为两位大写十六进制字符
  • 负数按照二进制补码形式转换

特殊情况:

  • 如果参数为 NULL,返回 NULL
  • 数字 0 转换为 '0'
  • 空字符串转换为空字符串
  • 负数转换为 64 位二进制补码的十六进制表示

示例

  1. 基本数字转换
SELECT HEX(12), HEX(-1);
+---------+------------------+
| HEX(12) | HEX(-1) |
+---------+------------------+
| C | FFFFFFFFFFFFFFFF |
+---------+------------------+
  1. 字符串转换
SELECT HEX('1'), HEX('@'), HEX('12');
+----------+----------+-----------+
| HEX('1') | HEX('@') | HEX('12') |
+----------+----------+-----------+
| 31 | 40 | 3132 |
+----------+----------+-----------+
  1. 大整数转换
SELECT HEX(255), HEX(65535), HEX(16777215);
+----------+------------+----------------+
| HEX(255) | HEX(65535) | HEX(16777215) |
+----------+------------+----------------+
| FF | FFFF | FFFFFF |
+----------+------------+----------------+
  1. NULL 值处理
SELECT HEX(NULL);
+-----------+
| HEX(NULL) |
+-----------+
| NULL |
+-----------+
  1. 零值和空字符串
SELECT HEX(0), HEX('');
+--------+--------+
| HEX(0) | HEX('') |
+--------+--------+
| 0 | |
+--------+--------+
  1. 特殊字符
SELECT HEX(' '), HEX('\t'), HEX('\n');
+----------+----------+----------+
| HEX(' ') | HEX('\t') | HEX('\n') |
+----------+----------+----------+
| 20 | 09 | 0A |
+----------+----------+----------+
  1. UTF-8 多字节字符
SELECT HEX('ṭṛì'), HEX('ḍḍumai');
+------------------+----------------------+
| HEX('ṭṛì') | HEX('ḍḍumai') |
+------------------+----------------------+
| E1B9ADE1B99BC3AC | E1B88DE1B88D756D6169 |
+------------------+----------------------+
  1. 负数的补码表示
SELECT HEX(-128), HEX(-32768);
+------------------+------------------+
| HEX(-128) | HEX(-32768) |
+------------------+------------------+
| FFFFFFFFFFFFFF80 | FFFFFFFFFFFF8000 |
+------------------+------------------+
  1. 混合字符串内容
SELECT HEX('A1'), HEX('Hello!');
+-----------+----------------+
| HEX('A1') | HEX('Hello!') |
+-----------+----------------+
| 4131 | 48656C6C6F21 |
+-----------+----------------+