📅  最后修改于: 2023-12-03 14:47:38.769000             🧑  作者: Mango
在 SQL 中,NULL 表示缺失或未知的数据。如果值未知或不适用,则使用 NULL 值。NULL 值既不等于 0 也不等于空字符串 '',也不等于任何其他值。因此,要判断是否存在 NULL 值,必须使用 IS NULL 或 IS NOT NULL 进行比较。
可以使用以下代码创建一个包含 NULL 值的表:
CREATE TABLE my_table (
id INT,
name VARCHAR(50),
date DATE,
age INT
);
INSERT INTO my_table (id, name, date, age) VALUES
(1, 'John', null, 22),
(2, 'Jane', '1990-02-25', null),
(3, 'Doe', '1985-05-10', 36),
(4, null, '1978-08-05', 43);
在以上示例代码中,DATE 和 AGE 列包含 NULL 值。
要查询包含 NULL 值的行,可以使用 IS NULL 或 IS NOT NULL 运算符。如下所示:
SELECT * FROM my_table WHERE date IS NULL;
SELECT * FROM my_table WHERE age IS NOT NULL;
第一条 SQL 语句将返回 DATE 列中包含 NULL 值的行。第二条 SQL 语句将返回 AGE 列中不包含 NULL 值的行。
在 SQL 中,NULL 值不等于任何值,因此它不能与任何值比较。 如果要将 NULL 值视为特定值,可以使用 COALESCE 函数或 IS NULL 运算符。
SELECT COALESCE(date, '1970-01-01') FROM my_table;
SELECT * FROM my_table WHERE name IS NULL;
第一条 SQL 语句将返回 DATE 列中的值,如果为 NULL,则将其替换为 '1970-01-01'。 第二条 SQL 语句将返回 NAME 列中包含 NULL 值的行。
如果要将 NULL 值替换为另一个值,可以使用 COALESCE 函数或 CASE 语句。
SELECT COALESCE(name, 'N/A') FROM my_table;
SELECT id, COALESCE(name, 'N/A'), COALESCE(date, '1970-01-01'), COALESCE(age, 0) FROM my_table;
第一条 SQL 语句将返回 NAME 列中的值,如果为 NULL,则将其替换为 'N/A'。 第二条 SQL 语句将返回包含 NULL 值的所有列,对于 NULL 值,将替换为其他值(如对于 DATE 列为 '1970-01-01',对于 AGE 列为 0)。
在 SQL 中,处理 NULL 值是一项非常重要的任务。了解如何创建包含 NULL 值的表格,如何查询包含 NULL 值的行,以及如何处理和替换 NULL 值,这些都是 SQL 开发人员必须学习的基本技能。