目录

  1. NULL 函数简介
  2. 常见的 SQL NULL 函数
    1. COALESCE() 函数
    2. NULLIF() 函数
    3. ISNULL() 函数
    4. IFNULL() 函数
  3. 在不同数据库中使用 NULL 函数
    1. MySQL
    2. PostgreSQL
    3. SQL Server
  4. 参考资料

NULL 函数简介

在 SQL 中,NULL 表示没有值或值未知。为了方便对 NULL 值进行处理和操作,SQL 提供了多种函数,帮助开发者在查询、插入、更新数据时更好地处理 NULL 值。NULL 函数可以用来检查、替代或与其他值进行比较,这对于确保数据的完整性和正确性非常重要。


常见的 SQL NULL 函数

1. COALESCE() 函数

COALESCE() 函数返回列表中第一个非 NULL 的值。如果所有值都是 NULL,则返回 NULL。它在查询中非常有用,尤其是在需要处理缺失数据时。

语法

COALESCE(value1, value2, ..., valueN);

  • value1, value2, ..., valueN 是一系列的值或列,COALESCE() 会从左到右检查这些值,第一个非 NULL 值会被返回。

示例

SELECT COALESCE(first_name, 'Unknown') AS first_name
FROM employees;

如果 first_name 字段为 NULL,则返回 'Unknown'


2. NULLIF() 函数

NULLIF() 函数用于比较两个值,如果它们相等,则返回 NULL,否则返回第一个值。NULLIF() 用于避免在比较时发生除零错误,或用于将相等的值替换为 NULL

语法

NULLIF(expression1, expression2);

  • 如果 expression1expression2 相等,返回 NULL,否则返回 expression1

示例

SELECT NULLIF(salary, 0) AS adjusted_salary
FROM employees;

如果 salary 为 0,NULLIF() 返回 NULL,否则返回 salary 的值。


3. ISNULL() 函数

ISNULL() 函数用于检查一个值是否为 NULL,如果是 NULL,则返回一个指定的替代值。该函数在处理 NULL 值时非常有用。

语法

ISNULL(expression, replacement_value);

  • 如果 expressionNULL,返回 replacement_value,否则返回 expression

示例

SELECT ISNULL(salary, 0) AS adjusted_salary
FROM employees;

如果 salaryNULL,则返回 0。


4. IFNULL() 函数

IFNULL() 函数在 MySQL 中与 ISNULL() 函数相似。它用于检查某个表达式是否为 NULL,如果是 NULL,则返回指定的替代值。

语法

IFNULL(expression, replacement_value);

  • 如果 expressionNULL,返回 replacement_value,否则返回 expression

示例

SELECT IFNULL(salary, 0) AS adjusted_salary
FROM employees;

如果 salaryNULL,则返回 0。


在不同数据库中使用 NULL 函数

1. MySQL

MySQL 提供了多种处理 NULL 值的函数,如 COALESCE()IFNULL()NULLIF()。这些函数可以帮助开发者处理缺失数据或将 NULL 替换为其他值。

示例

SELECT COALESCE(salary, 1000) FROM employees;  -- 如果 salary 为 NULL,则返回 1000
SELECT IFNULL(salary, 0) FROM employees;       -- 如果 salary 为 NULL,则返回 0

2. PostgreSQL

PostgreSQL 提供了与其他数据库相似的 NULL 函数,如 COALESCE()NULLIF()。此外,PostgreSQL 还支持更灵活的 CASE 语句来处理 NULL 值。

示例

SELECT COALESCE(first_name, 'Unknown') FROM employees;  -- 如果 first_name 为 NULL,则返回 'Unknown'

3. SQL Server

SQL Server 提供了 ISNULL()NULLIF() 函数,允许开发者在查询中处理 NULL 值。此外,COALESCE() 也可以用于 SQL Server。

示例

SELECT ISNULL(salary, 0) FROM employees;  -- 如果 salary 为 NULL,则返回 0
SELECT NULLIF(salary, 0) FROM employees;  -- 如果 salary 为 0,则返回 NULL


参考资料