binary 与 varbinary 类型和char与varchar类型是相似的,只是他们存储的是二进制数据,也就是说他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于字节的数值进行的

  binary与varbinary的最大长度和char与varchar是一样的,只不过他们是定义字节长度,而char和varchar对应的是字符长度。

存储和取出时对尾部空格的处理

  char(N)用来存储非二进制字符串,插入时,对于少于N个字符的会自动在尾部加空格,查询时,尾部的空格就会被丢弃掉

  vachar(N) 用来存储非二进制字符串,插入时,对于少于N个字符的不填补空格,查询时,尾部的空格不会被丢弃掉

  binary(N)存储二进制字符串,插入进,少于N个字节的会自动在尾部加0x00,取出时,所有的字节都保留,返回定义长度的字节长度,在比较的时候,所有的字节都是有效的,并且0x00<space (space对应的是0x20)

  varbinary在插入不会去填补0x00字节,查询的时候也不会丢弃任何字节,在比较的时候,所有的字节都是有效的,并且0x00<space (space对应的是0x20)

大小比较时

  char与varchar的字符比较中,是忽略大小写与最后的空格的,如:

  mysql> select 'a'='a ' , 'a'='A' , 'a'='A ';

  +----------+---------+----------+

  | 'a'='a ' | 'a'='A' | 'a'='A ' |

  +----------+---------+----------+

  |        1 |       1 |        1 |

  +----------+---------+----------+

  1 row in set (0.00 sec)

   而binary及varbinary的字节比较中,所有的信息都不会被忽略,如:

  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.08 sec)

mysql中varbinary、binary、char、varchar异同相关推荐

  1. 【MySQL】varbinary 真的比varchar 更合适

    一 前言     在讨论数据表字段设计的时候,有同学提出使用vabinary 代替 varchar ,部分开发不明所以,其实我也是.两者之间具体有什么区别?使用vabinary 代替 varchar ...

  2. mysql 存储过程 rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同

    ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同 MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函数作用并不完全相同. 从作用上来 ...

  3. mysql中varbinary什么意思_MySQL中的数据类型binary和varbinary详解

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

  4. MySQL中的enum,char与varchar,decimal

    1.MySQL中ENUM类型的使用之性别男女设定默认为男: SQL语句为: mysql> create table student (id int(11) primary key auto_in ...

  5. 解决Data too long for column ‘xxx‘ at row 1问题以及深入理解mysql的字符串数据类型(char,varchar,enum,text,longtext...)

    文章目录 1. 复现问题 2. 分析问题 3. 深入理解mysql的数据类型 3.1 CHAR 和 VARCHAR 类型 3.2 TEXT 类型 3.3 ENUM 类型 3.4 SET 类型 4. 解 ...

  6. mysql sql rowcount_ORACLE中的SQL%ROWCOUNT与MySQL中的ROW_COUNT()的一点异同-阿里云开发者社区...

    MySQL的ROW_COUNT()和ORACLE中的SQL%ROWCOUNT函数作用并不完全相同.从作用上来说,两者都是返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数,但 ...

  7. MySQL中int、char、varchar的性能浅谈

    网络上有许多似是而非的"谣言",当然都不是恶意,绝大部分都是开发者不愿意自己主动研究,反而轻信其他人的信口之言. 关于数据库的谣言也有不少,比如"int性能比char高很 ...

  8. mysql binary like,在MySQL中为BINARY LIKE操作建立索引

    我知道varchar_pattern_ops存在于Postgresql中,用于在LIKE查询中进行基于索引的快速搜索,但是MySQL是否有类似的功能? 目前,我有一个Django-MySQL设置,其中 ...

  9. MySql中truncate,delete,drop的异同点

    truncate,delete,drop的异同点 注意:这里说的delete是指不带where子句的delete语句 相同点:truncate和不带where子句的delete, 以及drop都会删除 ...

  10. mysql中int(15)和varchar(15)

    varchar的15代表了申请的空间长度,也是可以存储的数据的最大长度 int的15只是代表了展示的长度,不足15位以0填充 int(1)和int(15)所能存储的数字大小以及占用的空间都是相同的,只 ...

最新文章

  1. Android开发--用户定位服务--UserLocation
  2. http、TCP/IP协议与socket之间的区别
  3. 详谈调用winpcap驱动写arp多功能工具
  4. linux查看tcp络连接日志,Linux监控TCP连接数并触发日志记录
  5. 到底什么是“机器学习”?机器学习有哪些基本概念?(简单易懂)
  6. 单人存档_R星:会为GTA做更多单人内容,steam圣诞特惠即将开启,2077坏档BUG,那个游戏重回steam销量榜,Epic喜加一...
  7. 【Linux】SecureCRT中按退格键出现^H
  8. 学习Spring(四) -- Spring的继承与依赖
  9. 【java虚拟机序列】java中的垃圾回收与内存分配策略
  10. java破坏双亲委派_java的类加载机制-双亲委派,破坏双亲委派
  11. Cocos2d-x 设置竖屏的方法 2.0以上版本
  12. 云计算和虚拟化 - 虚拟化的介绍
  13. 计算机网络纠错码,纠错码
  14. 对自我认知四象限理解
  15. 程序猿12个“人艰不拆”的真相
  16. win11系统512g怎么分盘合理?
  17. [Photography] 新摄影笔记
  18. 嵌入式架构到底有多重要?看完惊呆了
  19. python3 requests库爬虫
  20. 表格插件vxe-table

热门文章

  1. asp.net Form 认证【转】
  2. MATLAB中的imagesc
  3. 关于TeamViewer中的ITbrain
  4. ICPC North Central NA Contest 2017 B - Pokemon Go Go
  5. 藏在兰州拉面里精益管理秘诀
  6. AQS-sync同步队列 [自定义同步器框架]
  7. STM32启动文件详解
  8. Linux命令之awk:运算与判断(三)
  9. 独立软件测试团队在敏捷开发中的几个特别实践
  10. 输入url后的加载过程