server2005/2008 char,nchar,varchar,nvarchar这四个有什么区别
解决方案 »
- SQL server 2000如何导入sybase数据库中的数据????
- 请问UPdate语句能像insert一样里面用select语句吗?
- 挑战一下,用sql把下面的数据排序。有点难度的。
- 存储过程问题 分类查询数量
- SQLSERVER2000触发器问题?
- 如何将sql2005时间字段默认值设置为当前日期和时间
- create table 成绩2 as select * from 成绩, 这个语句应该如何改写呢?
- 救命啊!數據庫還原的問題!
- 求一条SELECT语句。
- 是不是由于 updlock需要持续5秒,而TIMEOUT 为1S,所以updlock在1S钟时会被释放?
- 把表中有个字段的最大值所在的记录查询出来
- 关于SQL语言的
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。 二、char和varchar
固定长度(char)或可变长度(varchar)字符数据类型。
char[(n)]
长度为n个字节的固定长度且非Unicode的字符数据。
n必须是一个介于1和8,000之间的数值。
存储大小为n个字节。char在SQL-92中的同义词为character。
varchar[(n)]
长度为 n个字节的可变长度且非Unicode的字符数据。
n必须是一个介于1和8,000之间的数值。
存储大小为输入数据的字节的实际长度,而不是n个字节。
所输入的数据字符长度可以为零。
varchar在SQL-92中的同义词为char varying或character varying。 注释
如果没有在数据定义或变量声明语句中指定n,则默认长度为1。
如果没有使用CAST函数指定n,则默认长度为30。 将为使用char或varchar的对象被指派数据库的默认排序规则,
除非用COLLATE子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。 支持多语言的站点应考虑使用Unicode nchar或nvarchar数据类型以尽量减少字符转换问题。
如果希望列中的数据值大小接近一致,请使用char。
如果希望列中的数据值大小显著不同,请使用varchar。 如果执行CREATE TABLE 或ALTER TABLE 时SET ANSI_PADDING 为 OFF,
则一个定义为NULL的char 列将被作为varchar处理。 当排序规则代码页使用双字节字符时,存储大小仍然为n个字节。
根据字符串的不同,n个字节的存储大小可能小于n个字符。 总结:
1、 varchar:
可变长度的非Unicode数据,最长为8,000个字符。
2、nvarchar:
可变长度Unicode数据,其最大长度为4,000字符。
3、char:
固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
4、nchar
固定长度的 Unicode 数据,最大长度为 4,000 个字符。
5、char和varchar都是字符串类型的
用Unicode编码的字符串,结果是字符的整数值
varchar是可变长度非Unicode 的字符集,两者最大只能8000个字符,
而nchar是固定长度标准Unicode字符集,
nvarchar是可变长度标准Unicode 的字符集,两者最大只能4000个字符