MySQL BINARY和BIT类型
BINARY和VARBINARY类型
BINARY和VARBIANRY类型同CHAR和VARCHAR类型相似,除了BIANARY和VARBINARY类型只包含二进制字符串,即它们只包含byte串而非字符串,它们没有字符集的概念,排序和比较操作都是基于字节的数字值。
BINARY和VARBIANRY类型允许的最大长度同CHAR和VARCHAR一样,除了BINARY和VARBIANRY类型以字节为单位计算长度的,而不是以字符为单位计算长度。
BINARY采用左对齐方式存储,即小于指定长度时,会在右边填充0值,例如:BINARY(3)列,插入‘a\0'时,会变成’a\0\0'值存入。VARBINARY则不用在右边填充0。当在比较的情况下,填充的部分会被忽略掉或者被移除。
BIT数据类型
BIT数据类型用于存储bit值,能够存储比特长度范围为1~64。
采用 b'value'标记方式指定bit值,其中value是0或者1的序列,例如:b'111'代表7,b'10000000'代表128。
如果设置的0,1串的长度小于BIT(M)的M,那么在左面填充0,例如,将b'101'赋给BIT(6),那么会存储b'000101'。
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';
直接返回bit是不可读的,如果要变为可读的,可采用"+0"的方式或者用BIN()之类的转换函数, 转换后的值不显示高位0。
mysql> SELECT b+0, BIN(b+0), OCT(b+0), HEX(b+0) FROM t;
b+0: 255 10 5
BIN(b+0): 1111111 1010 101
OCT(b+0): 377 12 5
HEX(b+0): FF A 5
将bit值赋值给数字或者变量,可使用CAST()函数或者"+0"方式:
mysql> SET @v1 = 0b1000001;
mysql> SET @v2 = CAST(0b1000001 AS UNSIGNED), @v3 = 0b1000001+0;
mysql> SELECT @v1, @v2, @v3;
@v1: A
@v2: 65
@v3: 65
posted on 2016-09-24 12:14 coderland 阅读(19262) 评论(3) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?