谁能举例说说,不设默认值,允许 null 的好处有哪些?
我实在想不出,一个字段不设置默认值,允许为  null 都有哪些好处呢?
我现在知道很多坏处:1. null 会带来很多问题,我们不得不在处理时加上 isnull() 函数对其进行处理.否则就会出问题的.
与其这样,为何不设默认值呢?比如数值型的设成0,字符型的设成 '',这样不是更好吗?不会担心 null 造成的查询错误.
2.在前台程序中进行显示时,凡时NULL值的记录,也要用ISNULL()函数转一下才行.我不知哪种情况下,采用NULL会体现出好处,好处体现在何处.
请大家举例说说.当然了,NULL存在必定是有其存在的意义的,只是我不知道罢了.

解决方案 »

  1.   

    我举个例子,我有100件商品,其中十件是附加赠品,没有价格,其他都标价。现在我要找100元以下的商品 where price<100
    我要找100元以上的 where price>100赠品的price是null,都不会出来。你给搞默认值反而会很麻烦。
      

  2.   

    一般比如一个网页表单有很多格子需要填写,必添的项目都可以设置不许null其他的就不需要了,如果都不容许nul,开发人员会骂娘的。而且还浪费存储空间
      

  3.   

    是否为NULL要看你所设计的数据存储逻辑里NULL是否有特定的含义;
    是否会出现这种特定含义的数据保存于数据库。
      

  4.   

    not null 有default值就不用骂娘了,null一样会浪费存储空间,而且会消耗一定的查询性能
      

  5.   

    null表示数据没有初始化,0表示已经赋值为0
    当一个价格字段设置default value之后, 你怎么确认是价格没有输入,还是真的是赠品呢?
      

  6.   

    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.
      

  7.   

    NULL作为数据库的组成部分有其存在的必要,楼主的说法有失偏颇NULL表示未设置,和所有的空串或者0意义都是不同的比如简单的流转,可以放一个接受人字段,默认NULL,NULL表示未接收,其他的表示接受人。查询未接收用IS NULL
      

  8.   

    如果是一个数量栏位,
    那么如果不设null, default要多少? 
    感觉任何数字,都不恰当
      

  9.   

    对,不用NULL,找一个恰当的词代替才行
      

  10.   

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

  11.   

    是的,时间确实是个特例.用null最合理,确实找不到 default
      

  12.   

    null表示这个料没有来料,而0表示这个料已经来料,且刚好消耗完了;
      

  13.   


    说到库存,
    0 表示 该物品库存用完,仓库没货,
    而null,有可能只是表示未来的新物品,
    比如 新物品A,可能刚刚研发结束,还未投产,(或者刚与厂商议价完成,还未下订单)
    可能这个时候,仓库管理人员已经将 品名A录入系统了,这个时候,qty就应该设为null.因为,如果是 0(有些仓库管理软件会提示库存水位过低),这样采购人员可能造成困扰。
    但设为null,可避免这些
      

  14.   

    建议不要设什么鬼默认值,null要灵活,用null迫使你养成使用isNull的习惯,我觉得这样很没有什么不好的
      

  15.   

    曾经我也有跟LZ一样的困惑,后来经验有所增长,心得是留NULL还是DEFAULT之~不能一概而论,哪个字段适合哪种情况要经过思考来规划,因为NULL这东西~确定之后不能随意ALTER更改,所以在建表时就得深思熟虑,尽量不要后期更改~这个有点蛋疼