欢迎来到天天文库
浏览记录
ID:8812123
大小:33.00 KB
页数:3页
时间:2018-04-08
《varchar和nvarchar的区别》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1、各自的定义: ►nvarchar(n):包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。 ►varchar[(n)]: 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar(max)最大2gb字符使用C#中的DbType.varchar 针对max
2、 DbType.varchar,-12、区别: ►从存储方式上,nvarchar是按字符存储的,而varchar是按字节存储的; ►从存储量上考虑, varchar比较节省空间,因为存储大小为字节的实际长度,而nvarchar是双字节存储; ►在使用上,如果存储内容都是英文字符而没有汉字等其他语言符号,建议使用varchar;含有汉字的使用nvarchar,因为nvarchar是使用Unicode编码,即统一的字符编码标准,会减少乱码的出现几率; ►如果你做的项目可能涉及不同语言之间的转换,建议用nvarchar
3、。这点要注意:varchar 适合与存储英文和数字; nvarchr一般用于存储中文或其他语言的输入,因为 这样,可以防止到其他语言平台上出现乱码的问题。举个例子: create table a (name1 varchar(8)) insert a select '张红a' --- 存储长度为5个字节 insert a select '王一南' ----存储长度为6个字节---意思是varchar变长字符数据类型与存储数据的实际长度是一致的 nvarchar(n):可变长度 Unicode 数据,其最大长度为 4,000 字符。 字节的存储大小是所输
4、入字符个数的两倍, 就是说它是双字节来存储数据的。 如果存储数据如果存在单字节时,它也是以双字节来占用存储空间的。 举个例子: create table aa (name1 nvarchar(8)) insert aa select '张红a' --- 存储长度为6个字节varchar和nvarchar的区别:varchar(n)长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节(如varchar(6),当字段为qqq时,数据库实际占用空间为3个字节,而不是
5、6个字节,但只允许存储6个字节,一般中文占两个字节)。nvarchar(n)包含n个字符的可变长度Unicode字符数据。n的值必须介于1与4,000之间。字节的存储大小是所输入字符个数的两倍。两字段分别有字段值:我和coffee那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarcharSQLServer中,varchar和nvarchar如何选择?varchar在SQLServer中是采用单字节来
6、存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQLServer中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节. 正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时,在SQLServer存储中文字符为varchar就会出现乱码(显示为??).而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现
7、不了的.多数情况下,在布署的时候也不会有问题. 但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境...这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar).对项目管理比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情. 使用nvarchar的另一个非常好处就是在判断字符串的时候可
8、以不需要考虑中英文两种字符的差别. 当然,使用nvarchar存储英文字符会增大一倍的存储空
此文档下载收益归作者所有