SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法

NULL值影响查询条件的结果,并且结果很微妙。

以下是sql中AND,OR,NOT的真值表。

表1 AND的真值表

TRUE

FALSE

NULL

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

NULL

NULL

FALSE

NULL

表2 OR的真值表

TRUE

FALSE

NULL

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

NULL

NULL

TRUE

NULL

NULL

表3 NOT的真值表

TRUE

FALSE

NULL

FALSE

TRUE

NULL

当两个以上的查询条件与AND、OR、NOT组合时,NOT的优先级最高,其次是AND,最后是OR。为了避免歧义和确保可移植性最好使用括号。

A

BETWEEN

B

AND

C 等价于 (A>=B)

AND

(A<=C),因此根据真值表可以得出BETWEEN 子句中处理NULL值的规则。

同样,A

IN

(B,C,D) 等价于 (A=B)

OR

(A=C)

OR

(A=D),根据真值表,只要这三个表达式中有一个为NULL,结果返回肯定是NULL。

因此,

BETWEEN子句和

IN子句

并不增加sql语句的表达能力。

sql 中有

NULL

值测试,即:

字段

IS (

NOT

) NULL,但它的返回结果只有两种情况:TRUE或者FALSE。

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03