【SQLServer】varchar和nvarchar的基本介绍及其区别
varchar(n)
长度为 n 个字节的可变长度且⾮ Unicode的字符数据。n 必须是⼀个介于 1 和 8,000 之间的数值。存储⼤⼩为输⼊数据的字节的实际长度,⽽不是 n 个字节。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储⼤⼩是所输⼊字符个数的两倍。
两字段分别有字段值:我和coffee
那么varchar字段占2×2+6=10个字节的存储空间,⽽nvarchar字段占8×2=16个字节的存储空间。
如字段值只是英⽂可选择varchar,⽽字段值存在较多的双字节(中⽂、韩⽂等)字符时⽤nvarchar
上⾯是⼀个总结介绍,通过上⾯的介绍,可以知道:
varchar(4) 可以输⼊4个字母,也可以输⼊两个汉字
varchar2最大长度nvarchar(4) 可以输四个汉字,也可以输4个字母,但最多四个
char、varchar、nchar、nvarchar的区别
对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建⽴数据库中,对这四种类型往往⽐较模糊,这⾥做⼀下对⽐。
定长或变长
所谓定长就是长度固定的,当输⼊的数据长度没有达到指定的长度时将⾃动以英⽂空格在其后⾯填充,使长度达到相应的长度;有var前缀的,表⽰是实际存储空间是变长的,⽐如varchar、nvarchar变长字符数据则不会以空格填充,⽐较例外的是,text存储的也是可变长
Unicode或⾮Unicode
数据库中,英⽂字符只需要⼀个字节存储就⾜够了,但汉字和其他众多⾮英⽂字符,则需要两个字节存储。如果英⽂与汉字同时存在,由于占⽤空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题⽽产⽣的,它所有的字符都⽤两个字节表⽰,即英⽂字符也是⽤两个字节表⽰。⽽前缀n就表⽰Unicode字符,⽐如nchar、nvarchar,这两种类型使⽤了Unicode字符集。
字段容量
char,varchar 最多8000个英⽂,4000个汉字;nchar,nvarchar 可存储4000个字符,⽆论英⽂还是汉字
使⽤(个⼈偏好)
如果数据量⾮常⼤,⼜能100%确定长度且保存只是ansi字符,那么char;能确定长度⼜不⼀定是ansi字符,那么⽤nchar;对于超⼤数据,如⽂章内容,使⽤nText;其他的通⽤nvarchar
char、varchar、nchar、nvarchar特点⽐较
CHAR
CHAR存储定长数据很⽅便,CHAR字段上的索引效率级⾼,⽐如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。
VARCHAR
存储变长数据,但存储效率没有CHAR⾼,如果⼀个字段可能的值是不固定长度的,我们只知道它不可
能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这⼀个字节⽤于保存实际使⽤了多⼤的长度。
从空间上考虑,⽤varchar合适;从效率上考虑,⽤char合适,关键是根据实际情况到权衡点。
TEXT
text存储可变长度的⾮Unicode数据,最⼤长度为2^31-1(2,147,483,647)个字符。NCHAR、NVARCHAR、NTEXT

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。