char是一个定长字段,假如申请了char(10)的空间,那么无论实际存储多少内容.该字段都占用10个字符;
varchar是变长的,申请的只是最大长度,占用的空间为实际字符长度+1,最后一个字符存储使用了多长的空间;

在检索效率上来讲,char > varchar;
因此在使用中,如果确定某个字段的值的长度,可以使用char,否则应该尽量使用varchar.例如存储用户MD5加密后的密码,则应该使用char。

在char和varchar尾部加空格,检索时char类型后的被删掉,而varchar类型的保存。

以上是说的MySql;这个char和varchar的问题,各数据库应该是一样的;下面来在SqlServer看一下;

有一个学生表;先增加一个sex字段,类型char(5);

可能不好演示;再改为char(10);

编辑数据,在第一行sname列紧接文字后面手动敲三个空格;第一行和第二行sex列,紧接文字后面手动敲三个空格;

查看一下表的数据;

写一段TSQL来看一下情况;

declare @name1 varchar(32),@name2 varchar(32)declare @sex1 char(10),@sex2 char(10)select @name1=sname from student where snum=1select @name2=sname from student where snum=2select @sex1=sex from student where snum=1select @sex2=sex from student where snum=2print @name1print @name2print @sex1print @sex2if @name1='张一'print 'true'elseprint 'false'if @name1='张一   'print 'true'elseprint 'false'if @sex2='女'print 'true'elseprint 'false'if @sex1='女   'print 'true'elseprint 'false'

运行的情况如下;

if @name1='张一'
      print 'true'
  else
      print 'false'
  if @name1='张一   '
      print 'true'
  else
      print 'false'

这两个if都输出'true',说明TSQL自己处理了尾部空格;

if @sex2='女'
      print 'true'
  else
      print 'false'
  if @sex1='女   '
      print 'true'
  else
      print 'false'

这两个if语句,第一个输出'true',第二个输出'false';如前所述:尾部加空格,检索时char类型后的被删掉;

打印出的字段内容如下;第一行sname列尾部加了空格,检索出的内容带尾部空格;sex列都是固定长度为10;

char和varchar的区别以及尾部空格问题 - sqlserver演示相关推荐

  1. MySQL中char与varchar的区别

    字符与字节的区别 一个字符由于所使用的字符集的不同,会并存储在一个或多个字节中,所以一个字符占用多少个字节取决于所使用的字符集 注意:char与varchar后面接的数据大小为存储的字符数,而不是字节 ...

  2. mysql中char与varchar的区别分析(补充一句,int和integer没区别)

    转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

  3. mysql数据库varchar的区别_MySQL数据库char与varchar的区别分析及使用建议

    在数据库中,字符 型的数据是最多的,可以占到整个数据库的80%以上.为此正确处理字符型的数据,对于提高数据库的性能有很大的作用.在字符型数据中,用的最多的就是 Char与Varchar两种类型.前面的 ...

  4. Mysql字段数据类型:char与varchar的区别

    char: 1 声明的字段如果数据类型为char,则该字段占据的长度固定为声明时的值,例如:char(4),存入值 'ab',其长度仍为4.. 2 char的长度声明范围是 0-255 3 当存储数据 ...

  5. mysql中char与varchar的区别分析

    原文网址:http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者: 字体:[增加 减小] 类型:转载 在mysql教程中cha ...

  6. 通过char与varchar的区别,学习可变长的字符类型

    转自http://www.uphtm.com/database/232.html 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

  7. mysql varchar字段自动忽略尾部空格

    背景 查询数据时,值带着空格也可以被查到,经查询,发现mysql varchar字段自动忽略尾部空格,特此记录 正文 参考该地址 MySQL comparison operator, spaces - ...

  8. char 和 varchar 的区别,数据库索引B+树

    char 和 varchar 的区别 char(n) :固定长度,效率高:缺点:占用空间:存储固定长度的,使用 char 非常合适. varchar(n) :可变长度,存储的值是每个值占用的字节再加上 ...

  9. CHAR 和 VARCHAR 的区别?

    1.CHAR的长度是不可变的,而VARCHAR的长度是可变的,也就是说,定义一个CHAR[10]和VARCHAR[10],如果存进去的是'ABCD', 那么CHAR所占的长度依然为10,除了字符'AB ...

最新文章

  1. 转载:为什么使用ibatis而不用spring jdbcTemplate
  2. 在Python中将整数附加到列表的开头
  3. dhcp MySQL 超时_mysql导入sql文件过大或连接超时的解决的方法
  4. python中常见的运行时错误_常见Python运行时错误之一
  5. mysql修改忘记了root密码忘记了,mysql忘记root密码后,重新设置、修改root密码
  6. highgui java opencv_java – OpenCV 3.0.0 JAR缺少HighGUI
  7. 华景机器人怎么控制_【华景QQ机器人怎么用】华景QQ机器人好不好_使用技巧-ZOL软件百科...
  8. PyTorch出现RuntimeError: Function AddBackward0 returned an invalid gradient at index 1
  9. 怎么做应力应变曲线_金属薄板塑性应变比ISO 10113:2020 解读
  10. zabbix监控oracle rac,CentOS6.9下zabbix3.4.9通过orabbix1.2.3来监控oracle11gRAC
  11. Scrapy爬取美女图片第四集 突破反爬虫(上)
  12. 使用cd-hit对核酸序列或氨基酸序列聚类
  13. 使用CANoe进行Panel设计
  14. 最新最全论文合集——基于背景知识的对话系统
  15. 交规考试通过,庆祝一下
  16. java 仓库类_仓库类型和功能分别是什么?
  17. Salesforce常用技能
  18. word2010快速激活
  19. QCC3040/QCC3046 ANC(主动降噪)调测
  20. 3dmax 单位匹配和基本单位设置

热门文章

  1. Service中的绑定服务总结
  2. sqlserver 安装_安装sqlserver
  3. uni-app 修改富文本信息中的图片样式
  4. Hystrix 熔断器02 —— hystrix 案例之构建
  5. Regex解析字符串
  6. 将excel的数据导入到mysql数据表
  7. 微信小程序云开发 | 云函数安装依赖
  8. 【论文阅读和实现】On Spectral Clustering: Analysis and an algorithm【Python实现】
  9. 【解决方法】Panda read_csv()把第一行的数据变成了列名,怎么处理
  10. Keras函数式API