SQL 在运算和比较中使用Null

SQL 在运算和比较中使用NullNull 不会等于或不等于任何值,甚至不能与其自身进行比较,但是你希望对从 Null 列返回的数据进行评估,就像评估具体的值一样。例如,你想找出 EMP 表里业务提成(COMM 列)比员工 WARD 低的所有员工。检索结果应该包含业务提成为 Null 的员工。

SQL 在运算和比较中使用Null 问题描述

Null 不会等于或不等于任何值,甚至不能与其自身进行比较,但是你希望对从 Null 列返回的数据进行评估,就像评估具体的值一样。例如,你想找出 EMP 表里业务提成(COMM 列)比员工 WARD 低的所有员工。检索结果应该包含业务提成为 Null 的员工。

SQL 在运算和比较中使用Null 解决方案

使用如 COALESCE 这样的函数把 Null 转换为一个具体的、可以用于标准评估的值。

1 select ename,comm
2   from emp
3  where coalesce(comm,0) < ( select comm
4                               from emp
5                              where ename = 'WARD' )

SQL 在运算和比较中使用Null 扩展知识

COALESCE 函数会返回参数列表里的第一个非 Null 值。就本实例而言,COMM 列中的 Null 会被替换为 0,这样才能与 WARD 的业务提成相比较。把 COALESCE 函数添加到 SELECT 列表,就能查看其执行结果。

select ename,comm,coalesce(comm,0)
  from emp
 where coalesce(comm,0) < ( select comm
                              from emp
                             where ename = 'WARD' )
 
ENAME            COMM COALESCE(COMM,0)
---------- ---------- ----------------
SMITH                                0
ALLEN             300              300
JONES                                0
BLAKE                                0
CLARK                                0
SCOTT                                0
KING                                 0
TURNER              0                0
ADAMS                                0
JAMES                                0
FORD                                 0
MILLER                               0

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程