SQL“非空”操作符

在SQL中,我们可以使用IS NOT NULL操作符从数据库表中过滤出特定列的值不为空的结果。这有助于确保您获得干净的数据,其中不包含可能导致问题的任何缺失值,特别是在不处理NULL值的函数中。

NULL值是指不包含空字符串、数字零或NaN的数据的缺失。

在本教程中,我们将学习如何使用IS NOT NULL操作符过滤掉给定查询中包含NULL值的结果。

语法:

我们可以表达IS NOT NULL条件的基本语法,如下面的代码片段所示:

SELECT column1, column2,…

从table_name

WHERE column_name不为空;

 

我们从“select”关键字开始,指定我们希望在结果集中检索的列,然后指定我们希望从中获取数据的表的名称。

接下来,我们使用WHERE子句引入基于特定列的数据过滤。最后,我们指定希望过滤的条件。

示例1:

让我们看一些例子,看看如何使用IS NOT NULL条件来过滤结果。

考虑Sakila示例数据库,它可以在官方MySQL页面上免费下载。

假设我们希望检索“last_name”不等于null的客户的名称。我们可以使用如下所示的查询来完成此操作:

选择

*



客户c

在哪里

last_name不为空;

 

在本例中,查询返回customer表中“last_name”列的值不为空的所有行。

例2:AND和OR操作符

我们可以使用AND和OR操作符将IS NOT NULL条件与其他条件组合起来。这创建了更细粒度的过滤。

例如,假设我们想要检索“last_name”不为空且名字为Nancy或Holly的客户。

我们可以使用如下所示的查询:

选择

customer_id,

first_name、

last_name、

电子邮件



客户

在哪里

last_name不为空

AND (first_name = 'Nancy')

OR first_name = 'Holly');

 

在这个查询中,我们将IS NOT NULL条件与AND和OR操作符结合起来,过滤掉姓氏不为空或名字等于Nancy或Holly的记录。

结果输出如下:

SQL“非空”操作符-每日运维
如您所见,这提供了一种对目标数据执行更细粒度和更微小过滤的方法。

例3:使用聚合函数

我们还可以将IS NOT NULL函数与SQL聚合函数结合使用。例如,我们可以将它与count()函数一起使用,以计算给定列中非空值的数量。

例如,假设我们想要确定具有非空电子邮件地址的客户数量。我们可以这样使用查询:

选择

COUNT(customer_id) AS total



客户

在哪里

电子邮件不是空的;

 

这将以数值形式返回列中非空值的数量,如下所示:

总|

-----+

599 |

 

结论

在本教程中,我们学习了SQL中的IS NOT NULL条件,以便从给定的结果集或数据库表中过滤出空值。我们还学习了如何通过使用AND和OR操作符将IS NOT NULL条件与其他条件组合起来创建更复杂的过滤。