【SQL系列】处理NULL

简介: 【SQL系列】处理NULL

问题

有些列为 NULL,但你不想返回 NULL,而想返回非 NULL 值。

解决方案

使用函数 COALESCE 将 NULL 值替换为实际值。

select coalesce(deptno,0) as deptno

from emp;

扩展

函数 COALESCE 可以将一个或多个值作为参数,并返回参数列表中的第一个非 NULL 值。在上述解决方案中,如果 COMM 不为 NULL,就返回它,否则就返回 0。

处理 NULL 值时,最好利用 DBMS 提供的内置功能。在很多情况下,有多个函数可以很好地完成这项任务,但 COALESCE 在所有 DBMS 中都管用。另外,在所有 DBMS 中,都可以使用 CASE 来完成这项任务。

select case

      when deptno is not null then deptno

      else 0

      end

 from emp

虽然可以使用 CASE 将 NULL 值转换为实际值,但使用 COALESCE 更容易且更简洁。

补充

要判断一个值是否为 NULL,必须使用 IS NULL。

select *

from emp

where deptno is null

由于 NULL 与任何值(包括 NULL 本身)都不相等,也不会相等,因此测试列值是否为 NULL 时,不能使用 = 或 !=。要判断列值是否为 NULL,必须使用 IS NULL。也可以使用 IS NOT NULL 来查找给定列不为 NULL 的行。


点个赞吧,这对我非常重要!

目录
相关文章
|
7月前
|
SQL 关系型数据库 MySQL
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
我使用flinkcdc的sql形式进行全量同步,4张表,有两张表数据没进去,看日志,id怎么是null呢?
174 40
|
7月前
|
SQL 数据库
SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
NULL 值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为 NULL 值。需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。
127 0
|
1月前
|
SQL 存储 数据库
SQL NOT NULL
【11月更文挑战第14天】
42 6
|
5月前
|
SQL
SQL NOT NULL 约束
【7月更文挑战第18天】SQL NOT NULL 约束。
57 6
|
5月前
|
SQL
SQL NOT NULL 约束
【7月更文挑战第16天】SQL NOT NULL 约束。
36 3
|
6月前
|
SQL
SQL NULL 值
SQL NULL 值
383 3
|
5月前
|
SQL 存储 索引
MySQL设计规约问题之为什么应该把字段定义为NOT NULL并且提供默认值
MySQL设计规约问题之为什么应该把字段定义为NOT NULL并且提供默认值
|
6月前
|
SQL Oracle 关系型数据库
SQL NULL 函数
SQL NULL 函数
42 1
|
6月前
|
SQL
SQL NOT NULL 约束
SQL NOT NULL 约束
46 1
|
6月前
|
SQL
SQL NOT NULL 约束
SQL NOT NULL 约束
43 6

热门文章

最新文章