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

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年“一老一小”政策下,个人医保账户的资金使用范围有何新变化?
台州市殡葬一条龙服务公司电话|白事服务公司,殡礼灵棚
台州市殡葬一条龙服务公司电话|白事服务公司,殡礼灵棚
成功办理积分落户后,配偶和子女的随迁政策与条件具体是如何规定的?
成功办理积分落户后,配偶和子女的随迁政策与条件具体是如何规定的?
从“隐形”到“被看见”,我们可以通过完成哪几类关键任务来作为突破的起点?
从“隐形”到“被看见”,我们可以通过完成哪几类关键任务来作为突破的起点?
塔城java开源cms二次开发%软件系统开发,提供一站式建站服务
塔城java开源cms二次开发%软件系统开发,提供一站式建站服务
过期药品回收后会被如何处置,有没有可能被二次利用?
过期药品回收后会被如何处置,有没有可能被二次利用?
三明市殡葬服务公司一站式办理-丧事白事一条龙,贴心服务
三明市殡葬服务公司一站式办理-丧事白事一条龙,贴心服务
警惕黄金抵押低息引流陷阱,用专业知识分辨虚假营销宣传话术
警惕黄金抵押低息引流陷阱,用专业知识分辨虚假营销宣传话术
营运车辆与私家车抵押区别,两类车贷款知识点逐一对比分析
营运车辆与私家车抵押区别,两类车贷款知识点逐一对比分析
个人消费贷款申请必备条件,看完这几点再去申请
个人消费贷款申请必备条件,看完这几点再去申请
房产抵押类经营贷额度规则,结合房产价值与经营状况双重核算
房产抵押类经营贷额度规则,结合房产价值与经营状况双重核算
大理网站设计本地公司%短视频运营推广,企业解决方案
大理网站设计本地公司%短视频运营推广,企业解决方案
国际上对于零工权益保障有哪些新探索与新实践,哪些经验可能在2026年借鉴?
国际上对于零工权益保障有哪些新探索与新实践,哪些经验可能在2026年借鉴?
主驾头枕的高度和角度很多人随便调,这里面有没有什么讲究?
主驾头枕的高度和角度很多人随便调,这里面有没有什么讲究?
房产证红本抵押贷款还款方式大比拼,等额本金与先息后本谁好?
房产证红本抵押贷款还款方式大比拼,等额本金与先息后本谁好?
嘉兴市殡葬一条龙服务|丧事白事一条龙服务,殡葬灵堂策划
嘉兴市殡葬一条龙服务|丧事白事一条龙服务,殡葬灵堂策划