📜  SQL-NULL值(1)

📅  最后修改于: 2023-12-03 14:47:38.769000             🧑  作者: Mango

SQL-NULL值

在 SQL 中,NULL 表示缺失或未知的数据。如果值未知或不适用,则使用 NULL 值。NULL 值既不等于 0 也不等于空字符串 '',也不等于任何其他值。因此,要判断是否存在 NULL 值,必须使用 IS NULL 或 IS NOT NULL 进行比较。

创建包含 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 值的行

要查询包含 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 值的行。

处理 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 值

如果要将 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 开发人员必须学习的基本技能。