SQL 条件查询空值判断

空值(NULL)是 SQL 中的一个特殊值,代表了缺失或者未知的数据。与其他编程语言(例如 Java)不同,SQL 中判断一个值是否为空不能使用等于或者不等于。例如,以下查询尝试找出没有上级领导(manager 字段为空)的员工:

-- 空值判断的错误示例
SELECT emp_name, manager
  FROM employee
 WHERE manager = NULL;

该语句没有返回任何结果,但确实存在这样的数据。这个错误的原因在于将一个值与一个未知的值进行数学比较,结果仍然未知;即使是将两个空值进行比较,结果也是未知。以下运算的结果均为未知,用于查询条件的话不会返回任何结果:

NULL = 5;
NULL = NULL;
NULL != NULL;

那么,如何判断某个值是否为空值呢?在 SQL 中需要使用两个特殊的运算符:

expression IS NULL;
expression IS NOT NULL;

如果表达式 expression 的值为空,IS NULL 返回真,IS NOT NULL 返回假;如果表达式的值不为空,IS NULL 返回假,IS NOT NULL 返回真。因此,查找没有上级领导的员工应该使用以下语句:

SELECT emp_name, manager
  FROM employee
 WHERE manager IS NULL;

emp_name|manager|
--------|-------|
刘备     |[NULL] |

“刘备”是公司的最高领导,他没有上级领导。

如果仅仅能够指定单个过滤条件,就无法满足复杂的查询需求;为此,SQL 引入了用于构建复杂条件的逻辑运算符。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程