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:如果 expressionNULL,则返回的默认值。
与其他函数的比较
  • 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 表,包含以下数据:

employee_id first_name last_name salary
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;

结果:

employee_id first_name last_name salary salary_level
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;

结果:

employee_id first_name last_name salary salary_level
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;

结果:

employee_id first_name last_name salary
1 Alice Smith NULL
2 Bob Johnson 70000
3 Charlie Brown 50000
COALESCE 函数

假设有一个 employees 表,包含以下数据:

employee_id first_name last_name salary
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;

结果:

employee_id first_name last_name salary
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;

结果:

employee_id first_name last_name salary
1 Alice Smith 60000
2 Bob Johnson Not Available
3 Charlie Brown 50000

总结

通过使用条件函数,如 IFCASEIFNULLCOALESCENULLIF,可以在 SQL 查询中实现复杂的逻辑,使查询结果更符合业务需求。这些函数在处理 NULL 值、条件判断和多条件分支时非常有用。掌握这些函数的用法,可以帮助你更灵活地处理和分析数据。

全部评论

相关推荐

卓越教育2025春季校园招聘正式启动不限专业,不限教资,不限经验!公司简介:卓越教育成立于1997年,2018年在香港主板挂牌上市,深耕华南地区27年,大湾区知名教育科技集团,集团旗下拥有素质教育、职业教育、全日制学校等多元业务。招聘岗位:小初高素质教师、民办学校教师、营运岗、人工智能岗薪酬福利:竞争力薪酬,每年多次调薪机会,六险一金、双休+8小时工作制、住房补贴、年度体检、带薪年假、国内外团建工作地点:广州、深圳、佛山、东莞、中山、珠海、肇庆、武汉内推链接:https://wecruit.hotjob.cn/SU63366959bef57c270741e2c6/mc/position/campus?acotycoCode=gwmhhy&recruitType=1&isLimitShowPostScope=1内推码:gwmhhy #春招#                                       #内推#                                       #内推码#                                       #秋招#                     
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务