查看“Mysql 十六进制字面量”的源代码
←
Mysql 十六进制字面量
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
十六进制字面量值使用X’val’或0xval表示法编写,其中val包含十六进制数字(0..9,A..F)。字母的大小写和任何前导X都无关紧要。前导0x是区分大小写的,不能写成0X。 <br> 合法的十六进制字面量: <pre>X'01AF' X'01af' x'01AF' x'01af' 0x01AF 0x01af</pre> <br> 非法的十六进制字面量: <pre>X'0G' (G不是十六进制数字) 0X01AF (0X必须写成0x)</pre> <br> 使用X’val’表示法的值必须包含偶数个数字,否则会出现语法错误。要解决此问题,请在值前添加一个前导零: <pre>mysql> SET @s = X'FFF'; ERROR 1064 (42000): 您的SQL语法有误;请参阅与您的MySQL服务器版本对应的手册以获取正确的语法。 mysql> SET @s = X'0FFF'; Query OK, 0 rows affected (0.00 sec)</pre> <br> 使用0xval表示法的值如果包含奇数个数字,则会被解释为具有额外的前导0。例如,0xaaa被解释为0x0aaa。 <br> 默认情况下,十六进制字面量是一个二进制字符串,其中每对十六进制数字表示一个字符: <pre>mysql> SELECT X'4D7953514C', CHARSET(X'4D7953514C'); +---------------+------------------------+ | X'4D7953514C' | CHARSET(X'4D7953514C') | +---------------+------------------------+ | MySQL | binary | +---------------+------------------------+ mysql> SELECT 0x5461626c65, CHARSET(0x5461626c65); +--------------+-----------------------+ | 0x5461626c65 | CHARSET(0x5461626c65) | +--------------+-----------------------+ | Table | binary | +--------------+-----------------------+</pre> <br> 十六进制字面量可以有一个可选的字符集引入器和COLLATE子句,用于指定它作为使用特定字符集和排序规则的字符串: <pre>[_charset_name] X'val' [COLLATE collation_name]</pre> <br> 示例: <pre>SELECT _latin1 X'4D7953514C'; SELECT _utf8mb4 0x4D7953514C COLLATE utf8mb4_danish_ci;</pre> 这些示例使用X’val’表示法,但0xval表示法也可以引入器。 <br> 在数值上下文中,MySQL将十六进制字面量视为BIGINT UNSIGNED(64位无符号整数)。要确保对十六进制字面量的数值处理,请将其用于数值上下文。这样做的方法包括添加0或使用CAST(… AS UNSIGNED)。例如,将十六进制字面量分配给用户定义的变量时,默认情况下它是一个二进制字符串。要将值作为数字分配,请将其用于数值上下文: <pre>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 | +------+------+------+</pre> <br> 空的十六进制值(X’’)计算为零长度二进制字符串。转换为数字,它产生0: <pre>mysql> SELECT CHARSET(X''), LENGTH(X''); +--------------+-------------+ | CHARSET(X'') | LENGTH(X'') | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT X''+0; +-------+ | X''+0 | +-------+ | 0 | +-------+</pre> <br> X’val’表示法基于标准的SQL。ODBC的0x表示法基于ODBC,对于BLOB列,通常使用十六进制字符串来提供值。 要将字符串或数字转换为十六进制格式的字符串,请使用HEX()函数: <pre>mysql> SELECT HEX('cat'); +------------+ | HEX('cat') | +------------+ | 636174 | +------------+ mysql> SELECT X'636174'; +-----------+ | X'636174' | +-----------+ | cat | +-----------+</pre> <br> 对于十六进制字面量,位操作被视为数值上下文,但在MySQL 8.0及更高版本中,位操作允许在MySQL 8.0及更高版本中的数字或二进制字符串参数。要显式为十六进制字面量指定二进制字符串上下文,至少为其中一个参数使用_binary引入器: <pre>mysql> SET @v1 = X'000D' | X'0BC0'; mysql> SET @v2 = _binary X'000D' | X'0BC0'; mysql> SELECT HEX(@v1), HEX(@v2); +----------+----------+ | HEX(@v1) | HEX(@v2) | +----------+----------+ | BCD | 0BCD | +----------+----------+</pre> 显示结果对于位操作似乎相似,但结果没有_binary是BIGINT值,而结果有_binary是二进制字符串。由于结果类型的不同,显示的值也不同:高阶0位未显示在数值结果中。 <br>
返回至“
Mysql 十六进制字面量
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息