请教思路,对于字符型的字段,默认值设置成空串,即'',这种设计是个好习惯吗?

chouqin680 2007-11-28 04:41:23
请教思路,对于字符型的字段,默认值设置成空串,即'',这种设计是个好习惯吗?
------------------
对于字符型字段,我认为设置默认值为空字符比较好.因为这样不会出现null这种情况,以后在程序中也不用单独去处理null了.
可是我不知这种习惯是不是有不好的方面.
比如 空串 ''是不是比 null 更占空间呀.查询时,会不会比 null 更慢些呀.

另外:再请教一下,在哪种情况下最好不要设置默认值为空串,保留 null 这种取值的可能,能举个例子就更好了.
谢谢.
...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
WhyAndAnswer 2007-12-27
  • 打赏
  • 举报
回复
不觉得有什么好处,有需要的时候加一下默认值好了。
用的时候注意一下空值就可以了
chouqin680 2007-11-30
  • 打赏
  • 举报
回复
请大家再说说!
chouqin680 2007-11-29
  • 打赏
  • 举报
回复
上面几位老师好象都是赞成设默认值,可是为什么sqlserver2000自带的示例数据库中,字符型字段无一设置默认值呢?
fcuandy 2007-11-28
  • 打赏
  • 举报
回复
如果你想给的默认值,已在系统设置时被定义为一种状态了,那么就不能给它这个默认值.
就以tinyint的0来说.
某个订单表, status tinyint 当0时表示未处理.那么你的系统中很多地方依具这个值来对订单进行处理.
你给0是没有问题的. 但业务流程变更后,可能,0之前还有其它状态,比如 在未处理前还有一个状态为 未验证,即未验证的订单不能被处理, 如果你更改系统设置值,用 110来表示未处理,那么你的系统要改动的地方很多, 简单的做法就是新加一个状态值比如112, 订单入库程序就写112为status. 这种情况下,我宁愿不给默认值. 程序上的不严谨引起的业务数据混乱,造成业务出错,损失很大.
zsx123 2007-11-28
  • 打赏
  • 举报
回复
那要看什么地方用了,比如对与必须用户显式输入的字段,那就不应该设置默认值,
fcuandy 2007-11-28
  • 打赏
  • 举报
回复
要给默认值.

字符给 ''
数字给不给0.这个看系统设计时0是否表示一种特定状态,如果不是,那么可以,如果是,那就不行,可以给一个不可能出现的数字,也可以给null,但不推荐null.
日期,默认给1900-1-1,给getdate有问题, 如果给getdate那么,当业务数据写进去之后,连你都不能分辨这个时间是业务操作写的时间还是插记录时生成的时间,而1900-1-1这个很明显能看出来.
chouqin680 2007-11-28
  • 打赏
  • 举报
回复
以上两位老师都是认为加默认值好,我也是这么认为的.
但是我看了一下sqlserver2000自带的两个数据库,northwind,pubs,这两个库中的表中,字符型基本都不设默认值.也就有很少的int型设置了默认值为0,我认为自带的示例数据库应该是一个范本了,不设默认值应该有不设的原因吧.
请大家继续讨论.
dawugui 2007-11-28
  • 打赏
  • 举报
回复
我也这么认为字符串 '',数值 0,时间 getdate()
-狙击手- 2007-11-28
  • 打赏
  • 举报
回复
个人以为: 加缺省的好

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧