码迷,mamicode.com
首页 > 数据库 > 详细

《SQL反模式之“对未知的恐惧”》

时间:2015-01-12 13:05:22      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:数据库

对NULL的探讨

1、select A || B from table;

若字段A或者B有一个为null,则A||B结果为null;

2、NULL的用处(辨别悬空值):

(1)代替不确定的值

(2)代替可能没有意义的,不合适的值

(3)当传入无效参数时的返回值

(4)外查询时,未匹配列的占位符

3、对于大多数数据库,Null是一个特殊值,不同于0、false或者空字符串,但是在oracle和sybase中,Null是长度为0的空字符串。

4、null在标量表达式中的值

表达式 实际值 原因
NULL=0 NULL NULL不是0
NULL=12345 NULL 如果未指定值和所给值相等,则未知
NULL<>12345 NULL 不相等则未知
NULL+12345 NULL 未指定值和一直数座和则未知
NULL||"string" NULL Null不是空字符串,未知
NULL=NULL NULL 未指定值和另一个值相等则未知
NULL<>NULL NULL 如不同则未知

5、null在布尔表达式中的值

表达式 实际值 原因
NULL AND TRUE NULL NULL不是false
NULL AND FALSE FALSE 对于and,一假则假
NULL OR FALSE NULL null不是true
NULL OR TRUE TRUE 对于or,一真则真
NOT(NULL) NULL Null不是true,也不是flase

6、在where条件中添加is null或者is not Null会使查询放弃使用索引,增加查询时间,Null的设计初衷是作为悬空值


《SQL反模式之“对未知的恐惧”》

标签:数据库

原文地址:http://blog.csdn.net/l498948617/article/details/42640219

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!