注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

李建敏 廊坊师范学院信息技术提高班十二期

变是永远不变的

 
 
 

日志

 
 

【转载】nchar,char,varchar 与nvarchar区别  

2015-05-08 11:27:16|  分类: SQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这四种存储的数据可以是字母数字或标点符号。
char(n):存储定长数据n<=8000.每个英文字符占1个字节,对一个汉字占2个字节。比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不够的话后面补满空格。因为是固定长度,所以占空间大、但速度效率高。
nchar(n):存储定长数据n<=4000.规定英文字符或汉字都占2个字节。占空间大、效率高。
varchar(n):存储可变长度的数据n<=8000.每个英文字符占1个字节,对一个汉字占2个字节。比如varchar(10),它实际的值"abcd",则它的值就是“abcd",不用像char(10)补空格。因为是可变长度,所以存储效率没有char高,但占空间小。
nvarchar(n):存储可变长度的数据n<=4000.规定英文字符或汉字都占2个字节。占空间小,存储效率低。
在SQL中,char是character的简写,var 是varying的简写,n是Uncoid 的简写。
有的n代表national。
定长或变长
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;有var前缀的,表示是实际存储空间是变长的,比如varchar,nvarchar变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。
Unicode或非Unicode
数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集

所以一般来说,如果含有中文字符,用nchar/nvarchar2,如 果纯英文和数字,用char/varchar2
  评论这张
 
阅读(70)| 评论(9)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017