BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BINARY和VARBINARY允许的最大长度一样,如同CHAR和VARCHAR,不同的是BINARY和VARBINARY的长度是字节长度而不是字符长度。

BINARY和VARBINARY数据类型不同于CHAR BINARY和VARCHAR BINARY数据类型。对于后一种类型,BINARY属性不会将列视为二进制字符串列。相反,它致使使用列字符集的二元 校对规则,并且列自身包含非二进制字符字符串而不是二进制字节字符串。例如CHAR(5) BINARY被视为CHAR(5) CHARACTER SET latin1 COLLATE latin1_bin,假定默认字符集是latin1。这不同于BINARY(5),它保存5字节二进制字符串,没有字符集或 校对规则。

当保存BINARY值时,在它们右边填充值以达到指定长度。填充值是0x00(零字节)。插入值时在右侧添加0x00 on,并且选择时不删除尾部的字节。比较时所有字节很重要,包括ORDER BY和DISTINCT操作。比较时0x00字节和空格是不同的,0x00<空格。

例如:对于一个BINARY(3)列,当插入时 'a' 变为 'a /0'。'a/0'插入时变为'a/0/0'。当选择时两个插入的值均不更改。

对于VARBINARY,插入时不填充字符,选择时不裁剪字节。比较时所有字节很重要,包括ORDER BY和DISTINCT操作。比较时0x00字节和空格是不同的,0x00<空格。

对于尾部填充字符被裁剪掉或比较时将它们忽视掉的情形,如果列的索引需要唯一的值,在列内插入一个只是填充字符数不同的值将会造成复制键值错误。

如果你计划使用这些数据类型来保存二进制数据并且需要检索的值与保存的值完全相同,应考虑前面所述的填充和裁剪特征。下面的例子说明了用0x00填充的BINARY值如何影响列值比较:

mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)
 
mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)
 
mysql> SELECT HEX(c), c = 'a', c = 'a/0/0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a/0/0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)

如果检索的值必须与指定进行存储而没有填充的值相同,最好使用BLOB数据类型。

这是一个帮助文档的翻译,看了还是不怎么理解,不过最重要的就是映射成java的类型是string的,所以表面上看与char没什么主要区别

BINARY和VARBINARY类型相关推荐

  1. BINARY和VARBINARY类型的区别

    BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串.也就是说,它们包含字节字符串而不是字符字符串.这说明它们没有字符集,并且排序和比较基 ...

  2. BINARY和VARBINARY类型--MySql数据库

    BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串.也就是说,它们包含字节字符串而不是字符字符串.这说明它们没有字符集,并且排序和比较基 ...

  3. MySQL BIT、BINARY、VARBINARY、BLOB(二进制类型)

    MySQL 支持两类字符型数据:文本字符串和二进制字符串.上节<MySQL字符串类型>我们讲了文本字符串,这节我们来讲解二进制字符串. 二进制字符串类型有时候也直接被称为"二进制 ...

  4. 6、(二进制类型)BIT、BINARY、VARBINARY、BLOB

    MySQL 支持两类字符型数据:文本字符串和二进制字符串. 二进制字符串类型有时候也直接被称为"二进制类型". MySQL 中的二进制字符串有 BIT.BINARY.VARBINA ...

  5. mysql char 二进制_SQL:char 和 varchar、binary 和 varbinary、二进制字符串、严格模式、汉字编码方式...

    一.char 和 varchar 区别 1.定长和变成 char:定长,长度固定:varchar:变长,长度可变: 当插入的字符串长度小于定义长度时,则会以不同的方式来处理,如char(10),表示存 ...

  6. SQLSERVER binary 和 varbinary 用法全解

    在SQL Server中,使用数据类型 binary(n) 和 varbinary(n) 存储二进制数据,n是指字节数量: binary(n):固定长度为 n 字节,其中 n 值从 1 到 8,000 ...

  7. 数据库:CHAR,VARCHAR,TEXT,ENUM ,SET,BINARY,VARBINARY 列的完整性约束

    数据库 CHAR类型和VARCHAR类型 TEXT类型 ENUM 和SET类型 SET类型 二进制类型 BINARY和VARBINARY类型 BIT类型 列的完整性约束 CHAR类型和VARCHAR类 ...

  8. mysql binary blob区别_SQL中binary 和 varbinary的区别 blob

    binary 和 varbinary 固定长度 (binary) 的或可变长度 (varbinary) 的 binary 数据类型. binary [ ( n ) ] 固定长度的 n 个字节二进制数据 ...

  9. MySQL 数据类型BINARY和VARBINARY

    BINARY和VARBINARY与 CHAR和VARCHAR类型有点类似,不同的是BINARY和VARBINARY存储的是二进制的字符串,而非字符型字符串.也就是说,BINARY和VARBINARY没 ...

最新文章

  1. python爬虫软件-从零开始写Python爬虫,四大工具你值得拥有!
  2. cad二次开发--添加对象到模型空间中
  3. java抽象类到底能不能够实例化?
  4. 三月苏州健康小贴士!!!健康生活从我做起
  5. 【架构二】后端高可用架构演进
  6. Vue数据更新数据不渲染问题 - 资源篇
  7. 【Codeforces】925A Stairs and Elevators【贪心】
  8. 高并发系统中的限流应该如何做?
  9. Cortex-M3的存储器系统
  10. jy61 树莓派_用Linux树莓派来读取JY61的串口数据
  11. Linux 实现一个带有重定向功能的shell
  12. 学习日志(一)安装PySide2遇到的问题及其解决办法
  13. 僵化封闭是世界的新主流?
  14. oracle表转换mysql建表语句
  15. WinRAR美化增强版 v5.10 简体中文版
  16. 笔记本电脑怎么录制视频
  17. sql server2008R2 ,全球国家sql
  18. JavaSE基础加强-学习黑马程序员Java基础视频教程(P93开始)
  19. 破解分布式数据库全局死锁难题 GBase 8c引领数据库领域变革
  20. arduinorgb三色灯_Arduino教程2.2-RGB-LED灯以及PWM

热门文章

  1. activiti 工作流会签 / 多人审批时若一人通过即可
  2. 数据分析实战:利用python对心脏病数据集进行分析!
  3. python爬电影的优点是_我用 Python 爬了点你们喜欢的电影,这些电影真的很不错!...
  4. 减肥平台期突破宝典,你必须拥有!
  5. lq到底是什么意思_LQ是什么意思..?!谁知道..!?
  6. 爬取豆瓣排行榜电影数据
  7. 我与小娜(13):LIGO是什么组织?
  8. IGA(In-Game Advertising):游戏内置广告
  9. Lifecycle, LifecycleOwner, LifecycleObserver类讲解
  10. Python中的getattr、__getattr__、__getattribute__、__get__