欢迎光临泰安市中国丧葬服务网
详情描述

SQL中的CASE表达式是一个强大的条件逻辑工具,可以用于SELECT、WHERE、ORDER BY、GROUP BY等子句中。以下是详细用法说明:

1. 基本语法结构

简单CASE表达式

CASE 列名或表达式
    WHEN 值1 THEN 结果1
    WHEN 值2 THEN 结果2
    ...
    ELSE 默认结果
END

搜索CASE表达式(更常用)

CASE
    WHEN 条件1 THEN 结果1
    WHEN 条件2 THEN 结果2
    ...
    ELSE 默认结果
END

2. 在SELECT中的基本用法

示例1:简单分类

SELECT 
    employee_name,
    salary,
    CASE
        WHEN salary > 10000 THEN '高薪'
        WHEN salary > 5000 THEN '中薪'
        ELSE '低薪'
    END AS salary_level
FROM employees;

示例2:数值转换

SELECT 
    product_name,
    CASE status
        WHEN 'A' THEN '激活'
        WHEN 'I' THEN '禁用'
        WHEN 'P' THEN '待审核'
        ELSE '未知'
    END AS status_desc
FROM products;

3. 高级用法

嵌套CASE

SELECT 
    student_name,
    score,
    CASE
        WHEN score >= 90 THEN 
            CASE 
                WHEN score = 100 THEN '完美'
                ELSE '优秀'
            END
        WHEN score >= 60 THEN '及格'
        ELSE '不及格'
    END AS grade
FROM students;

在聚合函数中使用

-- 统计不同等级人数
SELECT 
    COUNT(CASE WHEN score >= 90 THEN 1 END) AS excellent_count,
    COUNT(CASE WHEN score >= 60 AND score < 90 THEN 1 END) AS pass_count,
    COUNT(CASE WHEN score < 60 THEN 1 END) AS fail_count
FROM students;

4. 在WHERE子句中使用

-- 查找特定条件下的数据
SELECT *
FROM orders
WHERE 
    CASE 
        WHEN customer_type = 'VIP' THEN total_amount > 1000
        WHEN customer_type = 'NORMAL' THEN total_amount > 5000
        ELSE total_amount > 100
    END;

5. 在ORDER BY中使用

-- 自定义排序规则
SELECT 
    product_name,
    category,
    price
FROM products
ORDER BY 
    CASE category
        WHEN '电子' THEN 1
        WHEN '服装' THEN 2
        WHEN '食品' THEN 3
        ELSE 4
    END,
    price DESC;

6. 在UPDATE语句中使用

UPDATE employees
SET bonus = 
    CASE
        WHEN performance_rating = 'A' THEN salary * 0.2
        WHEN performance_rating = 'B' THEN salary * 0.1
        ELSE salary * 0.05
    END;

7. 在GROUP BY中使用

-- 按年龄段分组统计
SELECT 
    CASE
        WHEN age < 20 THEN '20岁以下'
        WHEN age < 30 THEN '20-29岁'
        WHEN age < 40 THEN '30-39岁'
        ELSE '40岁以上'
    END AS age_group,
    COUNT(*) AS user_count,
    AVG(income) AS avg_income
FROM users
GROUP BY 
    CASE
        WHEN age < 20 THEN '20岁以下'
        WHEN age < 30 THEN '20-29岁'
        WHEN age < 40 THEN '30-39岁'
        ELSE '40岁以上'
    END;

8. 多条件组合示例

-- 综合示例:客户分类
SELECT 
    customer_id,
    customer_name,
    total_purchases,
    last_purchase_date,
    CASE
        WHEN total_purchases > 100000 AND DATEDIFF(day, last_purchase_date, GETDATE()) < 30 
            THEN 'VIP活跃客户'
        WHEN total_purchases > 50000 AND DATEDIFF(month, last_purchase_date, GETDATE()) < 3 
            THEN '重要客户'
        WHEN total_purchases > 10000 AND DATEDIFF(month, last_purchase_date, GETDATE()) < 6 
            THEN '一般客户'
        WHEN DATEDIFF(year, last_purchase_date, GETDATE()) > 1 
            THEN '流失客户'
        ELSE '普通客户'
    END AS customer_category
FROM customers;

9. 性能优化建议

ELSE子句:总是包含ELSE子句,避免返回NULL 条件顺序:把最可能满足的条件放在前面 避免过度嵌套:嵌套层级不宜超过3层 考虑使用CTE:复杂逻辑可先使用CTE简化

10. 常见注意事项

  • END不能省略:每个CASE表达式必须以END结束
  • 数据类型一致:所有THEN返回的数据类型应该兼容
  • NULL处理:CASE中NULL需要用IS NULL判断
  • 性能影响:大量CASE可能影响查询性能

CASE表达式是SQL中非常实用的功能,掌握好它能让你的SQL查询更加灵活和强大。

相关帖子
2026年,企业如何合规申请并配合执行针对其产品的消费补贴政策?
2026年,企业如何合规申请并配合执行针对其产品的消费补贴政策?
泰安市殡葬服务|殡仪服务一条龙,丧礼吊唁
泰安市殡葬服务|殡仪服务一条龙,丧礼吊唁
泰安市殡仪服务公司-丧事一站式服务,快速上门
泰安市殡仪服务公司-丧事一站式服务,快速上门
2026年“一老一小”政策下,个人医保账户的资金使用范围有何新变化?
2026年“一老一小”政策下,个人医保账户的资金使用范围有何新变化?
Nginx服务器部署详细代码实例
Nginx服务器部署详细代码实例
在职场中遭遇不公对待,如何区分正当反馈与可能被视作“穿小鞋”的行为?
在职场中遭遇不公对待,如何区分正当反馈与可能被视作“穿小鞋”的行为?
枣庄市殡葬服务热线|丧葬一条龙服务办理,白事悼念会服务
枣庄市殡葬服务热线|丧葬一条龙服务办理,白事悼念会服务
秦皇岛市网站开发建设服务%网站定制公司,多年专业建站经验
秦皇岛市网站开发建设服务%网站定制公司,多年专业建站经验
2026年,共有产权房转让政策与普通商品房交易相比有哪些特殊之处?
2026年,共有产权房转让政策与普通商品房交易相比有哪些特殊之处?
2026年,女职工在孕期、产期和哺乳期依法享有哪些核心劳动权益与保障?
2026年,女职工在孕期、产期和哺乳期依法享有哪些核心劳动权益与保障?
2026年,远程办公成为常态,如何保障居家办公环境的职业安全与健康?
2026年,远程办公成为常态,如何保障居家办公环境的职业安全与健康?
平凉市php开源网站二次开发%精准获客系统,定制开发
平凉市php开源网站二次开发%精准获客系统,定制开发
威海市殡葬一条龙价格|丧事白事一条龙,丧事灵堂服务
威海市殡葬一条龙价格|丧事白事一条龙,丧事灵堂服务
左右脑之间的胼胝体扮演着什么角色,它如何影响我们的思维和情绪传递?
左右脑之间的胼胝体扮演着什么角色,它如何影响我们的思维和情绪传递?
快递丢失索赔时,哪些关键证据能帮你锁定胜局,确保拿到全额赔偿?
快递丢失索赔时,哪些关键证据能帮你锁定胜局,确保拿到全额赔偿?
重庆市正规丧葬服务公司-白事丧事一条龙,价格透明,1小时上门
重庆市正规丧葬服务公司-白事丧事一条龙,价格透明,1小时上门
随着季节更替,夏季和冬季晨起饮用的温水,在习惯上需要做出哪些调整?
随着季节更替,夏季和冬季晨起饮用的温水,在习惯上需要做出哪些调整?
如果人类拥有蚂蚁的体型,是否也能实现从高处坠落而无恙?
如果人类拥有蚂蚁的体型,是否也能实现从高处坠落而无恙?
工伤认定过程中,医疗诊断证明书需要包含哪些必要信息和要素?
工伤认定过程中,医疗诊断证明书需要包含哪些必要信息和要素?