添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
大方的黄花菜  ·  Problems with ...·  3 月前    · 
腹黑的铅笔  ·  Are you using ...·  4 月前    · 
儒雅的红豆  ·  Bean Scopes :: Spring ...·  6 月前    · 
符号书写,其中包含十六进制数字 ( , )。数字和任何前导的字母都无关紧要。前导区分大小写,不能写成. X' val ' 0x val val 0..9 A..F X 0x 0X

合法的十六进制文字:

X'01AF'
X'01af'
x'01AF'
x'01af'
0x01AF
0x01af

非法的十六进制文字:

X'0G'   (G is not a hexadecimal digit)
0X01AF  (0X must be written as 0x)

使用符号书写的值 必须包含偶数个数字,否则会出现语法错误。要更正此问题,请用前导零填充该值: X' val '

mysql> SET @s = X'FFF';
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server
version for the right syntax to use near 'X'FFF''
mysql> SET @s = X'0FFF';
Query OK, 0 rows affected (0.00 sec)

使用包含奇数位的符号 被视为具有额外的前导. 例如, 0x val 0 0xaaa 0x0aaa

默认情况下,十六进制文字是二进制字符串,其中每对十六进制数字代表一个字符:

mysql> SELECT X'4D7953514C', CHARSET(X'4D7953514C');
+---------------+------------------------+
| X'4D7953514C' | CHARSET(X'4D7953514C') |
+---------------+------------------------+
| MySQL         | binary                 |
+---------------+------------------------+
mysql> SELECT 0x5461626c65, CHARSET(0x5461626c65);
+--------------+-----------------------+
| 0x5461626c65 | CHARSET(0x5461626c65) |
+--------------+-----------------------+
| Table        | binary                |
+--------------+-----------------------+

十六进制文字可能有一个可选的字符集介绍符和 COLLATE 子句,以将其指定为使用特定字符集和排序规则的字符串:

[_charset_name] X'val' [COLLATE collation_name]

SELECT _latin1 X'4D7953514C';
SELECT _utf8 0x4D7953514C COLLATE utf8_danish_ci;

这些示例使用 符号,但符号也允许引入者。有关介绍人的信息,请参阅 第 10.3.8 节,“字符集介绍人” X' val ' 0x val

在数字上下文中,MySQL 将十六进制文字视为 BIGINT UNSIGNED (64 位无符号整数)。为确保对十六进制文字进行数字处理,请在数字上下文中使用它。执行此操作的方法包括添加 0 或使用 CAST(... AS UNSIGNED) . 例如,分配给用户定义变量的十六进制文字在默认情况下是二进制字符串。要将值分配为数字,请在数字上下文中使用它:

mysql> SET @v1 = X'41';
mysql> SET @v2 = X'41'+0;
mysql> SET @v3 = CAST(X'41' AS UNSIGNED);
mysql> SELECT @v1, @v2, @v3;
+------+------+------+
| @v1  | @v2  | @v3  |
+------+------+------+
| A    |   65 |   65 |
+------+------+------+

空的十六进制值 ( X'' ) 计算为零长度二进制字符串。转换为数字,它产生 0:

mysql> SELECT CHARSET(X''), LENGTH(X'');
+--------------+-------------+
| CHARSET(X'') | LENGTH(X'') |
+--------------+-------------+
| binary       |           0 |
+--------------+-------------+
mysql> SELECT X''+0;
+-------+
| X''+0 |
+-------+
|     0 |
+-------+

表示法基于标准 SQL。该 表示法基于 ODBC,十六进制字符串通常用于为 列提供值。 X' val ' 0x BLOB

要将字符串或数字转换为十六进制格式的字符串,请使用以下 HEX() 函数:

mysql> SELECT HEX('cat');
+------------+
| HEX('cat') |
+------------+
| 636174     |
+------------+
mysql> SELECT X'636174';
+-----------+
| X'636174' |
+-----------+
| cat       |
+-----------+