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()