Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
executable file 63 lines (51 sloc) 1.26 KB
title category
十六进制的字面值
user guide

Hexadecimal Literals

十六进制字面值是有 X0x 前缀的字符串,后接表示十六进制的数字。注意 0x 是大小写敏感的,不能表示为 0X

例:

X'ac12'
X'12AC'
x'ac12'
x'12AC'
0xac12
0x12AC

以下是不合法的十六进制字面值:

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)
You can’t perform that action at this time.