SQL条件函数
条件函数
在 SQL 中,条件函数用于根据特定条件返回不同的值。这些函数可以帮助你在查询中实现复杂的逻辑,使查询结果更符合业务需求。以下是一些常用的条件函数及其用法。
1. IF 函数
IF 函数用于根据条件返回两个值中的一个。它类似于编程语言中的 if-else 语句。
语法:
IF(condition, true_value, false_value)
condition:条件表达式。true_value:如果条件为TRUE,则返回的值。false_value:如果条件为FALSE,则返回的值。
2. CASE 语句
CASE 语句用于根据多个条件返回不同的值。它类似于编程语言中的 switch-case 语句。
语法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
3. COALESCE 函数
COALESCE 函数用于返回参数列表中的第一个非 NULL 值。如果没有非 NULL 值,则返回 NULL。
语法:
COALESCE(value1, value2, ...)
4. NULLIF 函数
NULLIF 函数用于比较两个值,如果它们相等,则返回 NULL,否则返回第一个值。
语法:
NULLIF(value1, value2)
5. IFNULL 函数
IFNULL 用于检查一个值是否为 NULL,如果是 NULL,则返回一个指定的默认值。
语法
IFNULL(expression, default_value)
expression:要检查的表达式。default_value:如果expression为NULL,则返回的默认值。
与其他函数的比较
-
COALESCE:COALESCE函数可以接受多个参数,并返回第一个非NULL的值。- 如果所有参数都是
NULL,则返回NULL。 - 语法:
COALESCE(value1, value2, ...)。 - 示例:
COALESCE(salary, 0, 'Not Available')。
-
IF:IF函数用于根据条件返回两个值中的一个。- 语法:
IF(condition, true_value, false_value)。 - 示例:
IF(salary IS NULL, 0, salary)。
示例:
假设有一个 employees 表,包含以下数据:
| 1 | Alice | Smith | 60000 |
| 2 | Bob | Johnson | 70000 |
| 3 | Charlie | Brown | 50000 |
IF 函数
查询每个员工的工资级别,如果工资大于 60000,则为 "High",否则为 "Low":
SELECT
employee_id,
first_name,
last_name,
salary,
IF(salary > 60000, 'High', 'Low') AS salary_level
FROM
employees;
结果:
| 1 | Alice | Smith | 60000 | Low |
| 2 | Bob | Johnson | 70000 | High |
| 3 | Charlie | Brown | 50000 | Low |
CASE语句
查询每个员工的工资级别,如果工资大于 70000,则为 "High",如果工资在 50000 到 70000 之间,则为 "Medium",否则为 "Low":
SELECT
employee_id,
first_name,
last_name,
salary,
CASE
WHEN salary > 70000 THEN 'High'
WHEN salary BETWEEN 50000 AND 70000 THEN 'Medium'
ELSE 'Low'
END AS salary_level
FROM
employees;
结果:
| 1 | Alice | Smith | 60000 | Medium |
| 2 | Bob | Johnson | 70000 | Medium |
| 3 | Charlie | Brown | 50000 | Low |
NULLIF函数
查询每个员工的工资,如果工资等于 60000,则返回 NULL:
SELECT
employee_id,
first_name,
last_name,
NULLIF(salary, 60000) AS salary
FROM
employees;
结果:
| 1 | Alice | Smith | NULL |
| 2 | Bob | Johnson | 70000 |
| 3 | Charlie | Brown | 50000 |
COALESCE 函数
假设有一个 employees 表,包含以下数据:
| 1 | Alice | Smith | 60000 |
| 2 | Bob | Johnson | NULL |
| 3 | Charlie | Brown | 50000 |
查询每个员工的工资,如果工资为 NULL,则返回默认值 0:
SELECT
employee_id,
first_name,
last_name,
COALESCE(salary, 0) AS salary
FROM
employees;
结果:
| 1 | Alice | Smith | 60000 |
| 2 | Bob | Johnson | 0 |
| 3 | Charlie | Brown | 50000 |
IFNULL 函数
查询每个员工的工资,如果工资为 NULL,则返回字符串 "Not Available":
SELECT
employee_id,
first_name,
last_name,
IFNULL(salary, 'Not Available') AS salary
FROM
employees;
结果:
| 1 | Alice | Smith | 60000 |
| 2 | Bob | Johnson | Not Available |
| 3 | Charlie | Brown | 50000 |
总结
通过使用条件函数,如 IF、CASE、IFNULL、COALESCE 和 NULLIF,可以在 SQL 查询中实现复杂的逻辑,使查询结果更符合业务需求。这些函数在处理 NULL 值、条件判断和多条件分支时非常有用。掌握这些函数的用法,可以帮助你更灵活地处理和分析数据。