数据库空值陷阱

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dongliang_shali/article/details/51578490

关系数据库,无论是Mysql、Sql server、Oracle,都会有空值,数据库的空值设计的目的,是为了不占用存储空间,与程序语言null相对应,但存储的合理性却带来了判断的麻烦,以下我列出几个陷阱:

1、算数运算中,如果有空值,整个表达式为空,这时可以用IsNull函数来赋予一个默认值(对应的Oracle的nvl或decode函数)

2、关系运算中,如果有空值,则返回false,类似where null <> 2或where null not in(1,2)都是false(对于Oracle更极端,空字符串''也是null)

这时可以采用 is null或is not null来判断

3、空值条件判断会使索引失效,因此数据库中存储关键查询字段时,尽量避免采用null值存储

猜你喜欢

转载自blog.csdn.net/dongliang_shali/article/details/51578490