相关文件10bet官方网站 下载本手册 从本手册中摘录

9.1.4十六进制文字

使用十六进制文字值X''或者0x.符号,在哪里包含十六进制数字(0..9A..f.)。数字和任何领先的字母X没关系。一个领先者0x.是区分大小写的,不能写成0x.

法律十六进制文字:

x'01af'x'01af'x'01af'x'01af'0x01af 0x01af

非法十六进制文字:

x'0g'(g不是十六进制数字)0x01af(0x必须写为0x)

使用的值X''符号必须包含偶数位数或发生语法错误。要纠正问题,请使用前导零点键入值:

mysql>设置@s = x'fff';错误1064(42000):您的SQL语法中有错误;检查与MySQL Server版本对应的手册,以便在“X'FFF”“MySQL> Set @s = x'0fff”附近使用右语法;查询OK,影响0行(0.00秒)

使用的值0x.包含奇数位数的符号被视为具有额外的领导0.。例如,0xaaa.被解释为0x0aaa

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

mysql>选择x'4d7953514c',charset(x'4d7953514c');+ -------------- + ---------------------- + |x'4d7953514c'|charset(x'4d7953514c')|+ -------------- + ---------------------- + |mysql |二进制|+ ----------------------------------- + MySQL>选择0x5461626C65,Charset(0x5461626C65);+ ------------- + ---------------------- + |0x5461626C65 | CHARSET(0x5461626c65) | +--------------+-----------------------+ | Table | binary | +--------------+-----------------------+

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

[_charset_name.] X''[整理collat​​ion_name.]

例子:

选择_latin1 x'4d7953514c';选择_utf8 0x4d7953514c collat​​e utf8_danish_ci;

示例使用X''符号,但是0x.符号允许介绍者。有关介绍者的信息,请参阅第10.3.8节“字符集介绍者”

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

mysql> set @ v1 = x'41';mysql>设置@ v2 = x'41'+ 0;MySQL> SET @ V3 = CAST(X'41'为无符号);mysql>选择@ v1,@ v2,@ v3;+ ------ + ------ + ------ + |@ v1 |@ v2 |@ v3 |+ ------ + ------ + ------ + |a | 65 | 65 | +------+------+------+

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

mysql>选择charset(x''),长度(x');+ ------------- + ------------- + |charset(x')|长度(x'')|+ ------------- + ------------- + |二进制|0 |+ ------------- + ------------- + MySQL>选择x''+ 0;+ ------- + |x''+ 0 | +-------+ | 0 | +-------+

X''符号基于标准SQL。这0x.符号基于ODBC,其中十六进制字符串通常用于提供值斑点列。

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

mysql>选择hex('cat');+ ------------ + |十六进制('猫')|+ ------------ + |636174 |+ ------------ + MySQL>选择X'636174';+ ----------- + |x'636174'|+ ----------- + |猫| +-----------+

对于十六进制文字,位操作被视为数字上下文,但位操作允许MySQL 8.0和更高版本中的数字或二进制字符串参数。要为十六进制文字明确指定二进制字符串上下文,请使用a_binary.介绍至少一个参数:

mysql> set @ v1 = x'000d'|X'0BC0';mysql> set @ v2 = _binary x'000d'|X'0BC0';mysql>选择十六进制(@ v1),十六进制(@ v2);+ ---------- + ---------- + |十六进制(@ v1)|十六进制(@ v2)|+ ---------- + ---------- + |BCD | 0BCD | +----------+----------+

显示结果对于两个位操作都相似,但结果没有_binary.是A.big价值,而结果_binary.是一个二进制字符串。由于结果类型的差异,所显示的值不同:数字结果不显示高阶0位。