MariaDB HEX() 函数使用指南

在 MariaDB 中,HEX() 是一个内置的字符串函数,它返回其参数的十六进制字符串表示形式。

UNHEX() 函数是 HEX() 函数逆向操作函数。

MariaDB HEX() 语法

这里是 MariaDB HEX() 函数的语法:

HEX(number)
HEX(string)

参数

number/string
必需的。需要以十六进制表示的数字或字符串。

如果您没有提供参数, MariaDB 将报告一个错误:ERROR 1582 (42000): Incorrect parameter count in the call to native function 'HEX'

返回值

MariaDB HEX() 函数返回一个字符串,其表示给定数字或字符串的十六进制值。

如果参数为数字,HEX() 函数将返回该数字的十六进制值。

如果参数为字符串,HEX() 函数将每个字符被转换为 2 个十六进制字符。

如果参数为 NULLHEX() 函数将返回 NULL

从 MariaDB 10.5.0 开始,带有 INET6 参数的 HEX() 函数返回底层 16 字节二进制字符串的十六进制表示形式。

MariaDB HEX() 示例

基本用法

这个语句展现了 MariaDB HEX() 函数的基本用法:

SELECT
    HEX(16),
    HEX(255),
    HEX('a'),
    HEX('b'),
    HEX('c'),
    HEX('abc'),
    HEX(NULL)\G

输出:

*************************** 1. row ***************************
   HEX(16): 10
  HEX(255): FF
  HEX('a'): 61
  HEX('b'): 62
  HEX('c'): 63
HEX('abc'): 616263
 HEX(NULL): NULL

数字

这个语句使用 MariaDB HEX() 函数返回一些数字的十六进制表示形式。

SELECT
    HEX(0),
    HEX(1),
    HEX(2),
    HEX(9),
    HEX(10),
    HEX(11),
    HEX(12),
    HEX(13),
    HEX(14),
    HEX(15),
    HEX(16),
    HEX(17),
    HEX(18),
    HEX(19),
    HEX(20),
    HEX(28),
    HEX(29),
    HEX(30),
    HEX(31),
    HEX(32),
    HEX(33)\G

输出:

*************************** 1. row ***************************
 HEX(0): 0
 HEX(1): 1
 HEX(2): 2
 HEX(9): 9
HEX(10): A
HEX(11): B
HEX(12): C
HEX(13): D
HEX(14): E
HEX(15): F
HEX(16): 10
HEX(17): 11
HEX(18): 12
HEX(19): 13
HEX(20): 14
HEX(28): 1C
HEX(29): 1D
HEX(30): 1E
HEX(31): 1F
HEX(32): 20
HEX(33): 21
1 row in set (0.000 sec)

字符串

这个语句使用 MariaDB HEX() 函数返回一些字符或字符串的十六进制表示形式。

SELECT
    HEX('a'),
    HEX('A'),
    HEX('abc');

输出:

+----------+----------+------------+
| HEX('a') | HEX('A') | HEX('abc') |
+----------+----------+------------+
| 61       | 41       | 616263     |
+----------+----------+------------+

INET6

从 MariaDB 10.5.0 开始,带有 INET6 参数的 HEX() 返回底层 16 字节二进制字符串的十六进制表示形式。

例:

SELECT HEX(CAST('2403:A200:A200:1100:0000:0000:0F00:0003' AS INET6));

输出:

+---------------------------------------------------------------+
| HEX(CAST('2403:A200:A200:1100:0000:0000:0F00:0003' AS INET6)) |
+---------------------------------------------------------------+
| 2403A200A2001100000000000F000003                              |
+---------------------------------------------------------------+

这里又是,但使用相同的 IPv6 地址的缩写形式:

SELECT HEX(CAST('2403:A200:A200:1100:0000:0000:F00:3' AS INET6));

输出:

+-----------------------------------------------------------+
| HEX(CAST('2403:A200:A200:1100:0000:0000:F00:3' AS INET6)) |
+-----------------------------------------------------------+
| 2403A200A2001100000000000F000003                          |
+-----------------------------------------------------------+

结论

MariaDB HEX() 函数返回给定数字或字符串的十六进制值的字符串表示。