SQL语句中布尔表达式不可忽视的部分

数据库 SQL Server
我们写SQL语句有时,总是希望SQL表达式能够返回TRUE或者FALSE,却常常忽略了第三个值UNKNOWN。下面就将做一个小测试,看看会有什么问题。

SQL语句时,布尔表达式中的第三个值UNKNOWN往往被我们所忽视,但是这其实是很关键的,下文将带您做一个测试,说明这个问题。

我们写SQL语句有时,总是希望SQL表达式能够返回TRUE或者FALSE,却常常忽略了第三个值UNKNOWN。由于不注意判断返回的值有时会导致错误的结果, UNKNOWN与TRUE和FALSE做AND、OR运算返回的结果有一些差异。

来看一个小小的测试:

1.AND操作

AND
TRUE
FALSE
UNK
TRUE
 
 
 
FALSE
 
 
 
UNK
 
 
 

2.OR操作

OR
TRUE
FALSE
UNK
TRUE
 
 
 
FALSE
 
 
 
UNK
 
 
 

如果你已经有了答案,不妨跟微软工程师们给出的答案对照一下吧:

AND
TRUE
FALSE
UNK
TRUE
TRUE   
 FALSE
UNK
FALSE
FALSE
 FALSE
FALSE
UNK
UNK
 FALSE
UNK

OR
TRUE
FALSE
UNK
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
UNK
UNK
TRUE
UNK
UNK

 

【编辑推荐】

自动生成INSERT语句的SQL存储过程

SQL语句中的SELECT DISTINCT

教您用事务一次处理多条SQL语句

通过执行多条SQL语句实现数据库事务

存储过程优化的SQL语句写法

责任编辑:段燃 来源: 互联网
相关推荐

2009-12-16 09:29:26

Ruby布尔表达式

2009-08-20 15:02:57

C# If语句

2009-08-25 16:49:44

C#使用if语句

2019-12-17 17:01:02

MySQLSQL数据库

2010-03-12 14:51:47

Python布尔表达式

2010-09-03 14:39:15

SQLSELECT语句

2010-09-03 15:47:40

SQL语句锁定

2010-09-10 15:20:11

SQL函数计算表达式

2024-03-01 08:51:01

Django查询表达式查询语句

2010-09-03 14:47:50

SQLSELECT语句

2010-09-07 16:38:36

SQL语句SELECT DIST

2010-09-07 13:41:50

SQL语句

2024-10-17 17:03:43

SQL正则表达式MySQL

2010-09-03 11:25:58

SQL删除

2014-01-05 17:41:09

PostgreSQL表达式

2010-11-12 13:20:31

SQL Server

2024-03-25 13:46:12

C#Lambda编程

2024-06-27 00:36:06

2018-09-27 15:25:08

正则表达式前端

2010-10-21 10:56:29

SQL Server查
点赞
收藏

51CTO技术栈公众号