char ,varchar,nchar,nvarchar区别

来源:互联网 发布:arm linux gcc最新版 编辑:程序博客网 时间:2024/05/15 03:37

char ,varchar,nchar,nvarchar

四种都为字符类型,可按照两种方式分类

分类一:

定长或变长

类型

是否可变成

Char,nchar

否(如:定义了char(20),但是输入的字符不足20位,则会以空格补齐)

Varcharnvarchar

 

分类二:

Unicode或非Unicode

类型

是否可变成

Char,varchar

Unicode(可存储4000个汉字,或者8000个英文)

ncharnvarchar

Unicode(不管英文汉字都最多存4000个)

 

从以上分类不难看出,是否带var前缀可区分出定长或者变长;是否带n前缀可区分出Unicode或非Unicode

下边我们对四种字符来做一一介绍:

 

Char[n]

 

         长度为n个字节固定长度且非Unicode的字符数据。n必须是一个介于18000之间的值。存储大小为n个字节,输入字符不足n字节则系统会自动已空格补全。

 

Varchar(n)

 

         长度为n个字节可变长度且非Unicode的字符数据。n必须是一个介于18000之间的数值。存储大小为输入数据的字节实际长度,而不是n个字节。

 
Nchar(n)
 

长度为n个字节固定长度的Unicode字符数据。n必须是一个介于14000之间的值。存储大小为n的两倍,输入字符长度不足n则系统会自动已空格补全。

 
Nvarchar(n)
 

长度为n个字节可变长度的Unicode字符数据。n必须是一个介于14000之间的值。存储大小为输入字符个数的两倍。输入的字符长度可以为0

 

注:

①在数据定义或者变量声明中没指定长度(n),则默认长度为1。在数据转换中(如使用convert)没有指定则默认长度为30。因此,在是使用过程中一定要注意是否需要指定长度,如char在声明变量时忘记指定长度,给赋值’ab’,那么系统会自动截取一位’a’存储。

②具体使用哪种类型根据实际情况灵活选择。如果希望列中的数据值大小接近一致,使用charnchar;如果希望列中的数据值大小显著不同,使用varcharnvarchar

③如果执行CREATE TABLE  ALTER TABLE  SET ANSI_PADDINGOFF,则一个定义为NULLchar列将被作为varchar处理。 
SET  ANSI_PADDING  OFF 不适用于 nchar  nvarcharSET ANSI_PADDING ON 永远适用于 nchar  nvarchar   
Char,varchar两种字符类型汉字占用两个字符,字母占用一个字符。
Nchar,nvarchar两种字符类型的每个字符都占用两个字符。即使是字母也占用两个字符。
  

简单总结如下
  
1 varchar  
              可变长度的非   Unicode   数据,最长为   8,000    个字符。
  
   2nvarchar
  
              可变长度   Unicode    数据,其最大长度为   4,000    字符。
  
   3
char:
         
固定长度的非 Unicode字符数据,最大长度为 8,000个字符。


  
4
nchar
        
固定长度的 Unicode数据,最大长度为 4,000个字符。

 

原创粉丝点击