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
值、条件判断和多条件分支时非常有用。掌握这些函数的用法,可以帮助你更灵活地处理和分析数据。