SQL Server中char/varchar/nchar/nvarchar的区别[转载]
2009-09-18 10:47
155 查看
当我们建立数据库表时,都会根据字段特点选择适当的数据类型,这次主要讲的是关于字符类型,在我们平时的数据库结构当中,字符类型占绝大多数,如何高效准备地利用数据库和优化数据库结构是每个DBA必须掌握的技能。
在SQL Server中,现在主要以SQL Server2005为例。对于字符类型的有:
char:固定长度,存储ANSI字符,不足的补英文半角空格。
nchar:固定长度,存储Unicode字符,不足的补英文半角空格
varchar:可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar:可变长度,存储Unicode字符,根据数据长度自动变化。
如果你肯定存储的数据长度,而且不包中文的,可以选择char类型。
如果肯定存储的数据长度,但可能包括中文,可以选择nchar类型。
如果不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型,在SQL Server2005中也是比较常用的字符数据类型。
ANSI主要是以单字节来存储数据,一般适合英文。而我们常用的汉字需要用两个字节来存储,所以就要使用unicode的数据类型,不然读取出来的数据可能会乱码。
一个字符数据类型最大8000,如果使用了Unicode来存储就变成只能存储4000个字符。
如果存储的是文章内容等超长文本数据的,可以使用nText类型,也是可变长度的。总是前面凡带n开头的表示以unicode来存储数据,以var前缀的表示可变长。
如果高效利用,就看自己的具体需要,有时为了以后数据结构的变动,常使用nvarchar的比较多。
[转载]http://www.leadtrade123.cn/2009/04/12/847.html
在SQL Server中,现在主要以SQL Server2005为例。对于字符类型的有:
char:固定长度,存储ANSI字符,不足的补英文半角空格。
nchar:固定长度,存储Unicode字符,不足的补英文半角空格
varchar:可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar:可变长度,存储Unicode字符,根据数据长度自动变化。
如果你肯定存储的数据长度,而且不包中文的,可以选择char类型。
如果肯定存储的数据长度,但可能包括中文,可以选择nchar类型。
如果不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型,在SQL Server2005中也是比较常用的字符数据类型。
ANSI主要是以单字节来存储数据,一般适合英文。而我们常用的汉字需要用两个字节来存储,所以就要使用unicode的数据类型,不然读取出来的数据可能会乱码。
一个字符数据类型最大8000,如果使用了Unicode来存储就变成只能存储4000个字符。
如果存储的是文章内容等超长文本数据的,可以使用nText类型,也是可变长度的。总是前面凡带n开头的表示以unicode来存储数据,以var前缀的表示可变长。
如果高效利用,就看自己的具体需要,有时为了以后数据结构的变动,常使用nvarchar的比较多。
[转载]http://www.leadtrade123.cn/2009/04/12/847.html
相关文章推荐
- [转载]堆和栈的区别
- GET和POST有什么区别?及为什么网上多数答案都是错的(转载)
- 编译和链接(lib和dll区别)(转载)
- 纯虚函数和虚函数的区别与意义(转载)
- (转载)input中id和name属性的区别。
- VS 2010 与 VS 2008的区别(转载)
- .NET 的 WCF 和 WebService 有什么区别?(转载)
- C++中delete和delete[]的区别(博客转载)
- [转载]cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
- 转载_zImage和uImage的区别
- Java中List Set Map的区别(转载自网络)
- 【转载】C++三种容器:list、vector和deque的区别
- 关于Debug和Release之本质区别(转载)
- Sizeof与Strlen的区别与联系(转载)
- fastcgi与cgi的区别[转载]
- spring事务PROPAGATION_REQUIRES_NEW和PROPAGATION_NESTED区别(转载)
- DDB与DIB的区别(转载)
- 面向对象重写(override)与重载(overload)区别---转载“竹木人”
- 动态链接库、静态库区别与VS2005项目相关设置(转载)
- Peekmessage和Getmessage的区别(转载)