SQL反模式笔记13——关于NULL值

目标:存储和使用空值

反模式:将NULL作为普通的值,或者不适用null

  将NULL作为普通的值:

    1、在表达式中使用可空列,结果都是null。

    2、搜索允许为空的列

      只能使用is null、is not null,其它方法都没法搜出null值。

    3、在查询参数中使用null,无法将null作为参数传入。

  使用not null,用一个普通的值来代替null

    无法使用一个不是null的值(比如-1、0、‘’)来表示空。

    使用not null就意味着这个列的每个值都必须存在而且是有意义的。

解决方案:将null视为特殊值

  1、在标量表达式中使用null

    进行=、<>、+、||操作时,只要有一个null值,结果就为null。

  2、在布尔表达式中使用null

    布尔表达式中,只有:null and false结果为false,null or true结果为true,其它情况结果都是null。

  3、检索null值

    使用 is null、is not null

  4、声明not null列

    有时候可以通过使用default值来避免null,但有时候却不可以这么做。

  5、使用动态默认值

    sqlserver中的isnull()

posted @ 2012-05-07 11:34  日暮乡关何处是  阅读(239)  评论(0编辑  收藏  举报