- Hexadecimal Literals
Hexadecimal Literals
十六进制字面值是有 X 和 0x 前缀的字符串,后接表示十六进制的数字。注意 0x 是大小写敏感的,不能表示为 0X。
例:
X'ac12'X'12AC'x'ac12'x'12AC'0xac120x12AC
以下是不合法的十六进制字面值:
X'1z' (z 不是合法的十六进制值)0X12AC (0X 必须用小写的 0x)
对于使用 X'val' 格式的十六进制字面值,val 必须要有一个数字,可以在前面补一个 0 来避免语法错误。
mysql> select X'aff';ERROR 1105 (HY000): line 0 column 13 near ""hex literal: invalid hexadecimal format, must even numbers, but 3 (total length 13)mysql> select X'0aff';+---------+| X'0aff' |+---------+||+---------+1 row in set (0.00 sec)
默认情况,十六进制字面值是一个二进制字符串。
如果需要将一个字符串或者数字转换为十六进制字面值,可以使用内建函数 HEX():
mysql> SELECT HEX('TiDB');+-------------+| HEX('TiDB') |+-------------+| 54694442 |+-------------+1 row in set (0.01 sec)mysql> SELECT X'54694442';+-------------+| X'54694442' |+-------------+| TiDB |+-------------+1 row in set (0.00 sec)
