char,nchar,varchar,nvarchar,text,ntext之间的区别

1.nvarchar和varchar的区别
nvarchar和varchar的区别是存储方式不同varchar是按字节存储的.而带"n"的nvarchar是按字符存储的,比如说varchar(40),能存储40个字节长度的字符,存储中文字符的时候,因为中文字符1个字符就等于2个字节.所以varchar(40)只能存储20个中文字符.nvarchar(40),就可以存储40个中文字符,也就是说可以存储80个字节长度的字符.nvarchar要相对于存储的字符类型.比如有些字符是占3个字节的.

2.char与varchar的区别
char与varchar的区别是char为定长的,而varchar是不定长度比如char(5)那么他就要站用5个字节。而varchar(100)如果输入是"abc"那么他就只占用3个字节。

3. text与ntext的区别同varchar和nvarchar

以下摘自联机帮助:
前面加n主要是用于Unicode字符集:
SQLServer帮助:
---------------------------------------------------------------------------
使用Unicode数据
Unicode标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的Unicode标准Unicode数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。
对于用一个字节编码每个字符的数据类型,存在的问题之一就是此数据类型只能表示256个不同的字符。这就迫使对于不同的字母表(例如相对较小的欧洲字母表)采用多重编码规格(或者代码页)。而且也不可能处理象日文汉字或韩国文字这样具有数千个字符的字母表。
每个排序规则都有一个对表示char、varchar和text值中的每个字符定义位模式进行定义的代码页。可为个别的列和字符常量指派不同的代码页。客户端计算机使用与操作系统区域设置相关联的代码页解释字符位模式。有很多种不同的代码页。一些字符出现在某些代码页上,但并不出现在其它的代码页上。某些字符在一些代码页上用一个位模式定义,而在其它的代码页上却用另一个位模式定义。当您设计必须处理不同语言的国际性系统时,为了满足不同国家/地区的语言需求,给所有的计算机挑选代码页就变得困难了。要保证每一台计算机与使用不同代码页的系统交互时都进行正确的翻译也是困难的。
Unicode规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的2字节的模式(65,536)。因为所有的Unicode系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用Unicode数据类型,可尽量减少字符转换问题。

在MicrosoftSQLServer中,以下数据类型支持Unicode数据:
nchar
nvarchar
ntext

说明这些数据类型的前缀n来自SQL-92标准中的National(Unicode)数据类型。
nchar、nvarchar和ntext的用法分别与char、varchar和text的用法一样,但在以下方面不同:
Unicode支持的字符范围更大。
存储Unicode字符所需要的空间更大。

nchar和nvarchar列最多可以有4,000个字符,而不象char和varchar字符那样可以有8,000个字符。
Unicode常量使用N开头来指定:N'AUnicodestring'。
所有Unicode数据都使用相同的Unicode代码页。排序规则不控制用于Unicode列的代码页,仅控制比较规则和是否区分大小写等特性。

阅读更多
个人分类: SQL
想对作者说点什么? 我来说一句

SQL字段类型

2011年12月01日 19KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭