【整】char、varchar、nchar、nvarchar的区别

【整】char、varchar、nchar、nvarchar的区别

对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。

  1. 定长或变长    
    所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;有var前缀的,表示是实际存储空间是变长的,比如varchar,nvarchar变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。

  2. Unicode或非Unicode
    数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。

  3. 基于以上两点来看看字段容量







  4. char,varchar 最多8000个英文,4000个汉字
    nchar,nvarchar 可存储4000个字符,无论英文还是汉字

  5. 使用(个人偏好) 如果数据量非常大,又能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
    这三种从名字上看比前面三种多了个"N"。和charvarchar比较起来,ncharnvarchar最多存储4000个字符,不论是英文还是汉字;而charvarchar最多能存储8000个英文,4000个汉字。可以看出使用ncharnvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar

时间: 2024-12-16 05:43:39

【整】char、varchar、nchar、nvarchar的区别的相关文章

SQL Server char,varchar,nchar,nvarchar区别

(1)       定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符,根据数据长度自动变化. nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化. nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据.n 的值必须介于 1  与  4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字

【转】CHAR CHARACTER VARCHAR NCHAR NVARCHAR NVARCHAR2区别

http://blog.csdn.net/lhl6688/article/details/44156823?ref=myread oracle提供了五种字符数据类型:char.nchar.varchar.varchar2.nvarchar2. char:使用数据库字符集来存储数据,长度固定,如果存储的数据没有达到指定长度,自动补足空格.指定长度时,默认长度的计量单位由 NLS_LENGTH_SEMANTICS(默认为字节byte)参数决定,但是我们可以手动指定为char或者byte.oracle

SQL中 char varchar和nvarchar的区别

转至:http://www.cnblogs.com/carekee/articles/2094676.html char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.   

char,varchar,nchar,nvarchar

char [ ( n ) ] 固定长度,非 Unicode 字符串数据. n 用于定义字符串长度,并且它必须为 1 到 8,000 之间的值. 存储大小为 n 字节. char 的 ISO 同义词为 character. varchar [ ( n | max ) ] 可变长度,非 Unicode 字符串数据. n 用于定义字符串长度,并且它可以为 1 到 8,000 之间的值. max 指示最大存储大小是 2^31-1 个字节 (2 GB). 存储大小为所输入数据的实际长度 + 2 个字节. 

SQL中char、varchar、nvarchar的区别

SQL中char.varchar.nvarchar的区别: char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.       varchar[(n)]      长度为

char和nchar,varchar和nvarchar的区别

1)       定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符,根据数据长度自动变化. nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化. nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据.n 的值必须介于 1  与  4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符

char , varchar和Nvarchar区别

不多说先上表: 类型 长度 使用说明 长度说明 char(n)  定长 索引效率高 程序里面使用trim去除多余的空白 n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节 varchar(n) 变长 效率没char高 灵活 n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节 nchar(n) 定长 处理unicode数据类型(所有的字符使用两个字节表示) n 的值必须介于 1 与 4,000 之间.存储大小为 n 字

char、varchar和nvarchar的区别

首先char.varchar和nvarchar.text.ntext都是数据库中的文本数据类型,再区分区分var前缀.n前缀的区别.而text.ntext已经普遍被varchar(MAX)和nvarchar(MAX)所替代,所以一般不使用. char 表示不可变长度,如果赋的值不够指定位数,则末尾使用空格补齐. varchar 表示可变长度,如果赋的值不够指定位数,以实际赋的值为准. nvarchar n前缀表示的是unicode编码标准.如果是带n的,则每个字符占2个字节.如果不带n的,则英文

SQL中char、varchar、nvarchar的区别(zhuan)

char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.       varchar[(n)]      长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必

[转]SQL中char、varchar、nvarchar的区别

char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.       varchar[(n)]      长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必