首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
其他数据库开发
SQL Anywhere Studio
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
sql server2000中设置字段时遇到的问题!
加为好友
发送私信
在线聊天
yincaiqin
尹彩琴
等级:
可用分等级:
乞丐
总技术分:
2
总技术分排名:
292796
结帖率:
11.11%
发表于:
2008-11-10 22:12:55
楼主
今天遇到一件奇怪的事,原来以为char和nvarchar的差别就在于一个是定长一个是不定长。
但是如果设置性别(sex)的长度是char是则不能存储“男”、“女”,说是超过缓冲区的长度;
但是如果设置成nvarchar就可以用来存储“男”、“女”了。
我现在是知其然但是不知其所以然啊?
不知道哪位能给解释一下,出现这种情况的原因是什么?
谢谢啦!
问题点数:
5
回复次数:
5
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jianglihua1986
rr
等级:
可用分等级:
贫农
总技术分:
25
总技术分排名:
173233
发表于:
2008-11-14 15:09:29
1
楼 得分:
0
1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
2.CHAR的效率比VARCHAR2的效率稍高。
3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的 权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的 特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
何时该用CHAR,何时该用varchar2?
CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
VARCHAR2 虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
char中还会自动补齐空格,因为你insert到一个char字段自动补充了空格的,但是select 后空格没有删除。
4char[(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。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
luhui19881001
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
327011
发表于:
2008-11-16 17:14:56
2
楼 得分:
0
上一位说的很具体呀!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wybxs2006
等级:
可用分等级:
长工
总技术分:
176
总技术分排名:
78933
发表于:
2008-12-09 22:08:03
3
楼 得分:
0
支持楼上的方法
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
neder2
neder2
等级:
可用分等级:
中农
总技术分:
315
总技术分排名:
46017
发表于:
2008-12-21 16:33:06
4
楼 得分:
0
慢慢来,先掌握基本的,多练,多看。祝新年进步,万事如意!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yunyouyou
该用户很懒,没有设置昵称
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
3000000
发表于:
2008-12-29 21:47:19
5
楼 得分:
0
一楼说得很具体
顶
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友