查看“Mysql 位值字面量”的源代码
←
Mysql 位值字面量
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
位值文字使用b’val’或0bval表示法编写。val是一个用零和一组成的二进制值。任何前导b的大小写都无关紧要。前导0b是大小写敏感的,不能写成0B。 <br> 合法的位值文字: <pre>b'01' B'01' 0b01</pre> <br> 不合法的位值文字: <pre>b'2' (2不是二进制数字) 0B01 (0B必须写成0b)</pre> <br> 默认情况下,位值文字是一个二进制字符串: <pre>mysql> SELECT b'1000001', CHARSET(b'1000001'); +------------+---------------------+ | b'1000001' | CHARSET(b'1000001') | +------------+---------------------+ | A | binary | +------------+---------------------+ mysql> SELECT 0b1100001, CHARSET(0b1100001); +-----------+--------------------+ | 0b1100001 | CHARSET(0b1100001) | +-----------+--------------------+ | a | binary | +-----------+--------------------+</pre> <br> 一个位值文字可以有一个可选的字符集引入器和COLLATE子句,用于指定它使用特定的字符集和排序规则作为字符串: <pre>[_charset_name] b'val' [COLLATE collation_name]</pre> <br> 示例: <pre>SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;</pre> 这些示例使用b’val’表示法,但0bval表示法也允许引入器。 <br> 在数值上下文中,MySQL将位文字视为整数。要确保对位文字进行数值处理,请将其用于数值上下文。这样做的方法包括添加0或使用CAST(… AS UNSIGNED)。例如,将位文字分配给用户定义的变量默认为二进制字符串。要将值分配为数字,请将其用于数值上下文: <pre>mysql> SET @v1 = b'1100001'; mysql> SET @v2 = b'1100001'+0; mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED); mysql> SELECT @v1, @v2, @v3; +------+------+------+ | @v1 | @v2 | @v3 | +------+------+------+ | a | 97 | 97 | +------+------+------+</pre> <br> 空位值(b’’)计算为零长度二进制字符串。转换为数字,它产生0: <pre>mysql> SELECT CHARSET(b''), LENGTH(b''); +--------------+-------------+ | CHARSET(b'') | LENGTH(b'') | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+</pre> <br> 位值文字方便地用于指定BIT列的值: <pre>mysql> CREATE TABLE t (b BIT(8)); mysql> INSERT INTO t SET b = b'11111111'; mysql> INSERT INTO t SET b = b'1010'; mysql> INSERT INTO t SET b = b'0101';</pre> <br> 结果集中的位值以二进制值返回,可能无法很好地显示。要将位值转换为可打印形式,请将其用于数值上下文或使用诸如BIN()或HEX()之类的转换函数。高位0数字不会显示在转换值中。 <pre>mysql> SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t; +------+----------+--------+--------+ | b+0 | BIN(b) | OCT(b) | HEX(b) | +------+----------+--------+--------+ | 255 | 11111111 | 377 | FF | | 10 | 1010 | 12 | A | | 5 | 101 | 5 | 5 | +------+----------+--------+--------+</pre> <br> 对于位文字,位操作被视为数值上下文,但在MySQL 8.0及更高版本中,位操作允许数值或二进制字符串参数。要显式为位文字指定二进制字符串上下文,请至少为其中一个参数使用_binary引入器: <pre>mysql> SET @v1 = b'000010101' | b'000101010'; mysql> SET @v2 = _binary b'000010101' | _binary b'000101010'; mysql> SELECT HEX(@v1), HEX(@v2); +----------+----------+ | HEX(@v1) | HEX(@v2) | +----------+----------+ | 3F | 003F | +----------+----------+</pre> 这两种位操作的结果看起来相似,但不带_binary的结果是一个BIGINT值,而带_binary的结果是一个二进制字符串。由于结果类型的不同,显示的值也不同:高位0数字不会显示在数值结果中。 <br>
返回至“
Mysql 位值字面量
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息