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的记录。
结果输出如下:
如您所见,这提供了一种对目标数据执行更细粒度和更微小过滤的方法。
例3:使用聚合函数
我们还可以将IS NOT NULL函数与SQL聚合函数结合使用。例如,我们可以将它与count()函数一起使用,以计算给定列中非空值的数量。
例如,假设我们想要确定具有非空电子邮件地址的客户数量。我们可以这样使用查询:
选择
COUNT(customer_id) AS total
从
客户
在哪里
电子邮件不是空的;
这将以数值形式返回列中非空值的数量,如下所示:
总|
-----+
599 |
结论
在本教程中,我们学习了SQL中的IS NOT NULL条件,以便从给定的结果集或数据库表中过滤出空值。我们还学习了如何通过使用AND和OR操作符将IS NOT NULL条件与其他条件组合起来创建更复杂的过滤。