SQL Server中的Char 、varchar 、Nvarchar数据类型
来源:互联网 发布:淘宝手机详情页加链接 编辑:程序博客网 时间:2024/06/05 19:28
数据库的表,字段(属性)的数据类型char、varchar、nvchar比较
char(n):是长度为n个字节的定长的非unicode的字符数据。N为一个介于1到8000之间的值。其存储大小为输入数据的实际字节长度,而不是n个字节。如果你输入的实际字节长度少于n,那么其他位置会被空格填充。在数据存储中英文字母和数字占一个字节,汉字占两个字节。那么char(n)最多可以存储n个英文字母或数字,或者n/2个汉字。
varchar(n):是长度为n个字节的可变长度且非 Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n个字节。注意它和char(n)的区别是char(n)是定长的,varchar(n)是变长的。
如果你输入的字符的实际字节长度少于n,那么它的长度就是你实际输入的字节长度。在数据存储中英文字母和数字占一个字节,汉字占两个字节。Varchar(n)最多可以存储n个英文字母或数字,或者n/2个汉字。
Nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍. 在数据存储中英文字母,数字,汉字都是占两个字节。Char(n)最多可以存储n个英文字母或数字,或者n个汉字。
注意:在数据检索中,一般来说char型字段的数据时最快的varchar,nvarchar型字段其次。在所存数据长度不一致的情况下,varchar型字段所占空间最少,char,nvarchar其次。
那么:在什么情况下使用什么样的数据类型?
如果你所存数据长度基本一致,建议使用char型。这样检索速度快,但是提取的时候要注意用trim()函数剔除所存数据两边的空格。 如果你所存数据长度差异较大,可以使用varchar或者nvarchar。如果你想较好的支持多语言的话,最好使用nvarchar。使用nvarchar可以减少字符转换问题,防止某些情况下乱码的出现。
举例:
我在本机浏览数据库中数据正常,页面数据显示正常。但是当我将数据库导入到服务器以后,在客户端发现页面从数据库中读取的数据显示全是乱码。我通过查询分析器连接到服务器,发现数据库中的汉字也全变成了乱码。我估计服务器端sql server为英文版,于是将服务器数据库中varchar型字段都改为nvarchar型,乱码问题解决。但是同时我又发现一个奇怪的现象。
比如数据库中有两个记录。 表名: ComputerInfo Computer computerType 成都家具厂 私营 合肥家具厂 私营 其中Computer字段为nvarchar型。我用 select * from ComputerInfo where Computer like ‘%成都%’ 返回的记录数总是0.奇怪了,明明数据库中有数据的嘛。我查阅了大量的资料以后,终于解决了问题。只需要把查询语句改为select * from ComputerInfo where Computer like N‘%成都%’ 即可。在字符前加N表示将其转化为unicode字符。
总结如下图:
最大值
数据长度
可存储最多英文(数字)
最多汉字数
英文(数字)所占字节
汉字所占字节
检索速度
char
8000
固定
8000
4000
1
2
快
varchar
8000
可变
8000
4000
1
2
慢
nvarchar
4000
可变
4000
4000
2
2
慢
- SQL Server中的Char 、varchar 、Nvarchar数据类型
- SQL Server 2005数据类型char,varchar,text ,nchar,nvarchar,ntext
- SQL Server数据类型char、nchar、varchar、nvarchar的区别浅析
- SQL中的char、varchar、nvarchar
- SQL Server nvarchar和varchar,char区别
- sql server中char nchar nvarchar varchar
- SQL Server中char ,varchar 与 nvarchar
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别(转)
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- SQL Server中字段数据类型char nchar varchar nvarchar的区别
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- SQL Server中字段数据类型char nchar varchar nvarchar的区别
- SQL Server 2005数据类型char,varchar,text ,nchar,nvarchar,ntext 等学习拾遗
- SQL数据类型nchar,char,varchar与nvarchar区别
- SQL数据类型nchar,char,varchar与nvarchar区别
- POJ-1163
- HttpServletResponse简介
- 安卓手机出现数据丢失怎么办
- 投标方案编写
- MS SQL SERVER2005 DAC链接
- SQL Server中的Char 、varchar 、Nvarchar数据类型
- Android图片缩放总结及比较
- ASIHTTPRequest系列(一):同步和异步请求
- Cocoa的单例(singleton)设计模式
- 函数参数中带省略号的用法
- VMware 安装CentOS
- 净空法师:陈晓旭往生的教训(转载)
- 通用的将表单数据拷贝到javabean的方法
- 七 MyEclipse手动安装SVN插件