一次记录
上次程序出错是因为在数据库中定义数据类型是定义错了,判断时一直是错误的,接下类我就查了查他们之间的区别,做了整理,希望自己以后可以记清楚这些之间的区别,在应用的时侯能分清楚。
对于程序中的string类型,SQLServer:数据库中有char、varchar、nchar、nvarchar、text、ntext这
几种类型来对应,在选择应用的时候我们要根据实际情况来选择合适的类型。下面我们就来看看他们之间的区别:
1.定长:定长就是长度固定的,当输入的长度不够时就会用英文空格在其后自动填充,使长度达到设定的长度的字符串类型。
char:对英文(ASCII)占用一个字节,对汉字占用两个字节,存储定长数据很方便,char字段上的索
引效率很高。是固定长度的。
nchar:对一个英文字符和一个汉字都占用两个字节,是双字节存储,也是固定长度。
2.变长:变长字符不会以空格填充。
varchar:单字节存储,英文占用一个字节,汉字占用两个字节,存储是变长的。
nvarchar:双字节存储,对一个英文字符和一个汉字都占用两个字节,存储是变长的。
text和ntext都是变长存储的,不同的是ntext是双字节存储的。
所以一般来说,有汉字的存储的存储的时候,用nchar/nvarchar,只有英文字苻和数字的时候用char/varchar.
text存储可变长度的非Unicode数据。
二次记录——varchar详解
1、varchar(50)表示的是设置可以存储的最大字符串长度为50个字节,并且字符是变长的,如果不满50个就是根据实际存储的字节来确定的。
2、varchar:可变长度,存储ANSI字符,根据数据长度自动变化。
3、varchar是数据类型为字符型,50表示的是最大字符长度。
sqlserver中varchar最大长度是8000,但是可以使用varchar(max),可以达到2G。
关于解释:有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar。
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。