SQL 中 NULL 值的解析与计数方法
在 SQL 世界中,处理 NULL 值是数据分析师和数据库专业人员经常遇到的挑战。NULL 的特殊之处在于,它们的存在可能会让人感到困惑和不知所措,从而影响数据分析的流畅性。
然而,理解 NULL 值的含义以及它们对获得准确、全面的数据洞察的重要性至关重要。本文将深入探讨 SQL 命令,以及如何利用这些命令来统计 NULL 值和非 NULL 值。
什么是 SQL NULL 值?
NULL 值表示“没有值”,它不等同于零或空字符串。
因此,我们不能直接使用传统的比较运算符(如 =、<、> 和 <>)来操作 NULL 值。如果使用,结果将会是“未知”。
可以把 NULL 值看作是在创建记录时被特意留空的字段。例如,你创建一个表并添加新列,但暂时不为这些列赋予具体值,那么这些列默认就包含 NULL 值。 NULL 值可以被插入到任何数据类型的列中。
为了演示,我们可以使用以下 SQL 语法创建一个新的表:
CREATE TABLE Employee ( FirstName VARCHAR(50), LastName VARCHAR(50), PhoneNum VARCHAR(15), Salary FLOAT ); INSERT INTO Employee (FirstName, LastName, PhoneNum, Salary) VALUES ('Maxwell', 'Ayomide', '812-345-6789', 150000.00), ('David', 'Tosin', NULL, 450000.00), ('Eben', 'Teniola', '912-345-6789', 590000.00), ('Kenneth', 'Olisa', '809-456-8732', NULL), ('Esther', 'Oge', NULL, NULL);
你还可以使用 SQL 的 UPDATE 语句来更新表中的 NULL 值。以下是使用方法:
UPDATE Employee SET FirstName="Esther" WHERE Salary = 200000;
要查看更新后的结果,请执行:
SELECT * FROM Employee;
SQL 中 NULL 值的应用场景
NULL 值在 SQL 中有多种应用场景:
- 当数据在输入时不可用或未知时。
- 当数据不适用于特定实体时。例如,在调查问卷中,问题“是否有孩子”可能会出现 NULL 值。
SQL IS NULL 条件的作用
SQL 的 IS NULL 命令是每一个程序员都应该掌握的重要命令。它用于测试 NULL 值,特别适用于查找 NULL 值。这个命令会返回指定列中所有包含 NULL 值的行。
SELECT FirstName, LastName, PhoneNum FROM Employee WHERE PhoneNum IS NULL;
上述查询将返回 PhoneNum 列中所有值为 NULL 的行。
SQL IS NOT NULL 条件的作用
SQL 的 IS NOT NULL 命令与 IS NULL 命令相反。
此命令用于测试非 NULL 值。它会返回指定列中所有包含非 NULL 值的行,并排除 NULL 值。
SELECT FirstName, LastName, PhoneNum FROM Employee WHERE PhoneNum IS NOT NULL;
上述查询会返回 PhoneNum 列中所有不为 NULL 的行。
如何计算列中的 SQL NULL 值?
COUNT() 命令用于统计数量。在分析 SQL 表格中的数据以及使用子查询和临时表时,此命令非常有用。
以下查询可以计算 PhoneNum 列中 NULL 值的数量:
SELECT COUNT(*) AS [Total Number of NULL] FROM Employee WHERE PhoneNum IS NULL
执行后将返回:
如何计算列中的非 NULL 值?
使用 NOT NULL 命令可以计算 PhoneNum 列中非 NULL 值的数量。
SELECT COUNT(PhoneNum) AS [Total Number of Non-NULL Values] FROM Employee WHERE PhoneNum IS NOT NULL
这将返回:
你也可以使用此查询将结果存储到一个新表中:
SELECT SUM(CASE WHEN PhoneNum is null THEN 1 ELSE 0 END) AS [Number Of Null Values], COUNT(PhoneNum) AS [Number Of Non-Null Values] FROM Employee
在这个查询中,CASE 和 IS NULL 命令配合使用,将 PhoneNum 列中的 NULL 值标记为 1。然后,将所有标记为 1 的值相加,结果保存在新创建的 Number Of Null Values 列中。
计数 NULL 值并继续分析
NULL 值起初可能会让人感到棘手,但实际上它们并不难处理。通过使用 COUNT() 函数,只需几行 SQL 代码,就可以轻松地统计 NULL 和非 NULL 值。
一旦你掌握了这些 SQL 命令,就可以将其应用于各种场景,并轻松地进行数据分析。