Varchar是长度为N个字节的变长非Unicode字符数据,nvarchar包含N个字符的变长Unicode字符数据。
可变字符
可变长度为N字节的非Unicode字符数据。n必须是1到8,000之间的数字。大小存储为输入数据的实际字节长度,而不是N字节。
nvarchar(n)
包含n个字符的可变长度Unicode字符数据。n的值必须介于1和4,000之间。字节的存储大小是输入字符数的两倍。
两个字段具有字段值:I和coffee。
那么varchar字段占用22 ^ 6=10字节的存储空间,而nvarchar字段占用82=16字节的存储空间。
如果字段值只有英文,则可以选择Varchar,如果有更多的双字节字符(中文、韩文等),则使用nvarchar。)字段值中。
以上是总结介绍。通过上面的介绍,你就可以知道了。
Varchar(4)可以输入4个字母或两个汉字。
NVAR (4)可以输入四个汉字或四个字母,但最多只能输入四个。
char、varchar、nchar、nvarchar的区别
对于程序中的字符串字段,SQLServer中有四种类型:char、varchar、nchar和nvarchar(暂时不考虑text和ntext)。在数据库的建立中,这四种类型往往是模糊的。这里有一个对比。
固定或可变长度
所谓定长,就是长度固定。当输入数据的长度没有达到规定长度时,会自动用英文空格填充,使长度达到相应的长度;如果有var前缀,则意味着实际存储空间是可变的。比如varchar,nvarchar变长字符数据不会用空格填充。例外情况是文本存储可变长度字符。
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(10),无论你存储的数据是否达到10字节,都要占用10字节的空间。
可变长字符串
存储变长数据,但存储效率没有CHAR高。如果一个字段的可能值长度不固定,我们只知道不能超过10个字符。定义为VARCHAR(10)最划算。VARCHAR类型的实际长度是其值1的实际长度。为什么是“1”?该字节用于存储实际使用的长度。
考虑到空间,用varchar比较合适;考虑到效率,用char比较合适。关键是要根据实际情况找到取舍点。
文本
文本存储可变长度的非unicode数据,最大长度为2 ^ 31-1(2,147,483,647)个字符。
NCHAR、NVARCHAR、NTEXT
这三种和前三种相比名字里多了个‘n’。与char和varchar相比,nchar和nvarchar可以存储多达4000个字符,无论是英文还是中文。Char和varchar最多可以存储8000个英文字符和4000个中文字符。可以看出,使用nchar和nvarchar数据类型时,不用担心输入的字符是英文还是中文,比较方便,但存储英文的数量有所损失。
所以一般来说,如果包含汉字,就用nchar/nvarchar,如果是纯英文和数字,就用char/varchar。