使用十六进制文字值X'
或者瓦
'0x.
符号,在哪里瓦
瓦
包含十六进制数字(0..9
那A..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'瓦'[整理collation_name.]
例子:
选择_latin1 x'4d7953514c';选择_utf8 0x4d7953514c collate 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位。