色破飞机 发表于 2016-11-1 08:38:57

SQL Server 中的 nchar、varchar 和 ntext

  字符集是在安装SQL Server时选择的,不能更改。使用   Unicode数据类型,列可存储由Unicode标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode数据类型需要相当于非Unicode数据类型两倍的存储空间。   Unicode数据使用SQL Server中的nchar、varchar和   ntext数据类型进行存储。对于存储来源于多种字符集的字符的列,可采用这些数据类型。当列中各项所包含的Unicode字符数不同时(至多为4000),使用nvarchar类型。当列中各项为同一固定长度时(至多为4000个Unicode字符),使用nchar类型。当列中任意项超过4000个Unicode字符时,使用ntext   类型。
  
  nvarchar(n):   包含n个字符的可变长度Unicode字符数据。n的值必须介于1与4,000之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。   varchar[(n)]:   长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的数据字符长度可以为零
  
  nvarchar和varchar的区别是存储方式不同   varchar是按字节存储的.而带"n"的nvarchar是按字符存储的   比如说varchar(40),能存储40个字节长度的字符,存储中文字符的时候,因为中文字符1个字符就等于2个字节.所以varchar(40)只能存储20个中文字符.   nvarchar(40),就可以存储40个中文字符,也就是说可以存储80个字节长度的字符.nvarchar要相对于存储的字符类型.比如有些字符是占3个字节的.   同样的,char和nchar也一样道理
  
  char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。   varchar是变长型,它的存储空间会跟你输入的实际字符数而改变,但最大长度不能超过你指定的长度。   nvarchar是unicode的变长型,它和char的区别很明显了,它和varchar的区别主要是存储空间大,相同长度下能容内更多的字符。
页: [1]
查看完整版本: SQL Server 中的 nchar、varchar 和 ntext