日期:2014-05-18  浏览次数:20411 次

谁能举例说说,不设默认值,允许 null 的好处有哪些?
谁能举例说说,不设默认值,允许 null 的好处有哪些?
我实在想不出,一个字段不设置默认值,允许为 null 都有哪些好处呢?
我现在知道很多坏处:

1. null 会带来很多问题,我们不得不在处理时加上 isnull() 函数对其进行处理.否则就会出问题的.
与其这样,为何不设默认值呢?比如数值型的设成0,字符型的设成 '',这样不是更好吗?不会担心 null 造成的查询错误.
2.在前台程序中进行显示时,凡时NULL值的记录,也要用ISNULL()函数转一下才行.

我不知哪种情况下,采用NULL会体现出好处,好处体现在何处.
请大家举例说说.

当然了,NULL存在必定是有其存在的意义的,只是我不知道罢了.

------解决方案--------------------
我举个例子,我有100件商品,其中十件是附加赠品,没有价格,其他都标价。

现在我要找100元以下的商品 where price<100
我要找100元以上的 where price>100

赠品的price是null,都不会出来。你给搞默认值反而会很麻烦。
------解决方案--------------------
是否为NULL要看你所设计的数据存储逻辑里NULL是否有特定的含义;
是否会出现这种特定含义的数据保存于数据库。
------解决方案--------------------
探讨
一般比如一个网页表单有很多格子需要填写,必添的项目都可以设置不许null其他的就不需要了,如果都不容许nul,开发人员会骂娘的。而且还浪费存储空间

------解决方案--------------------
The issue of whether to allow NULL has become an almost religious one for many in the industry, and no doubt the discussion here will outrage a few people. However, my intention isn't to engage in a philosophical debate. Pragmatically, dealing with NULL brings added complexity to the storage engine because SQL Server keeps a special bitmap in every row to indicate which nullable columns actually are NULL. If NULLs are allowed, SQL Server must decode this bitmap for every row accessed. Allowing NULL also adds complexity in application code, which can often lead to bugs. You must always add special logic to account for the case of NULL.
------解决方案--------------------
NULL作为数据库的组成部分有其存在的必要,楼主的说法有失偏颇

NULL表示未设置,和所有的空串或者0意义都是不同的

比如简单的流转,可以放一个接受人字段,默认NULL,NULL表示未接收,其他的表示接受人。查询未接收用IS NULL

------解决方案--------------------
如果是一个数量栏位,
那么如果不设null, default要多少? 
感觉任何数字,都不恰当。。。
------解决方案--------------------
探讨
如果是一个数量栏位,
那么如果不设null, default要多少?
感觉任何数字,都不恰当。。。

------解决方案--------------------
探讨
引用:
如果是一个数量栏位,
那么如果不设null, default要多少?
感觉任何数字,都不恰当。。。

但是大多数情况下,用0做为 default 不是很好吗?
比如库存数,没有库存时一定是0呀,入库就有值了.
能否举个例子,这种情况下,用0是不合适的,谢

------解决方案--------------------
探讨
引用:
如果是一个数量栏位,
那么如果不设null, default要多少?
感觉任何数字,都不恰当。。。

但是大多数情况下,用0做为 default 不是很好吗?
比如库存数,没有库存时一定是0呀,入库就有值了.
能否举个例子,这种情况下,用0是不合适的,谢