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

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=1
  select @name2=sname from student where snum=2
  select @sex1=sex from student where snum=1
  select @sex2=sex from student where snum=2
  print @name1
  print @name2
  print @sex1
  print @sex2
  if @name1='张一'
      print 'true'
  else
      print 'false'
  if @name1='张一   '
      print 'true'
  else
      print 'false'
  if @sex2='女'
      print 'true'
  else
      print 'false'
  if @sex1='女   '
      print 'true'
  else
      print '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;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值