nchar 和 nvarchar
nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。
nchar(n)
包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与
4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为
national char 和 national character。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与
4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在
SQL-92 中的同义词为 national char varying 和 national
character varying。
注释
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。
如果希望列中所有数据项的大小接近一致,则使用 nchar。
如果希望列中数据项的大小差异很大,则使用 nvarchar。
使用 nchar 或 nvarchar 的对象被赋予数据库的默认排序规则,除非使用 COLLATE 子句赋予特定的排序规则。
SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar。SET
ANSI_PADDING ON 永远适用于 nchar 和 nvarchar。
varchar 对每个英文(ascii)字符都占用2个字节,对一个汉字也只占用两个字节
char 对英文(ascii)字符占用1个字节,对一个汉字占用2个字节
varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"
而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,
就是把它填满为100个字节)。
由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格
去掉!