mysql,case when else查询

本文介绍了如何在MySQL中利用CASE WHEN ELSE语句进行复杂查询,通过实例展示了如何根据不同的条件获取不同的结果,逐步解析了查询过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- 1
select   *  from    book ; 

-- 2
select *,(
case id when '2' then '二'
        else '保密' end) as number
from book ; 

-- 3
select *,(
case id  when '%2%' then '二'       -- 只能使用==  不能使用like
        else '保密' end) as number
from book ; 

-------------------------------------------------------------
-- 4
select  *,(case when id = 2 then '二' 
                when id = 3  then '三'
								when id like '%4%'  then '四'  -- == 和 like均能使用
								when id like '%5%'  then '五'
								when id like '%6%'  then '六'
           else '未知' end
       ) as   number
from book;

-- 5
select  *,(case when id like '%2%'  then '二' 
                when id like '%3%'  then '三'
								when id like '%4%'  then '四'
								when id like '%5%'  then '五'
								when id like '%6%' 
### MySQL CASE WHEN THEN ELSE END 语句详解 #### 基本语法结构 在MySQL中,`CASE-WHEN-THEN-ELSE-END` 是一种强大的控制流语句,允许执行基于不同条件返回不同的值的操作。基本语法如下: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 此结构可以嵌入到SQL查询的任何地方,只要期望得到单个表达式的上下文中即可[^1]。 #### 数据转换示例 为了展示该功能的应用范围,在实际应用中经常用来做数据转换工作。例如将性别字段从数字编码转成文字描述: ```sql SELECT id, name, CASE gender WHEN '0' THEN 'Female' WHEN '1' THEN 'Male' ELSE 'Unknown' END AS gender_description FROM users; ``` 这段代码会读取表 `users` 中的数据,并根据 `gender` 字段的内容决定显示 "Male", "Female" 或者 "Unknown"[^3]。 #### 排名计算实例 另一个常见的应用场景是在统计分析时实现自定义排名逻辑。比如按照销售额给员工打分并分配等级标签: ```sql SELECT employee_id, sales_amount, CASE WHEN sales_amount >= 50000 THEN 'A级' WHEN sales_amount BETWEEN 30000 AND 49999 THEN 'B级' WHEN sales_amount < 30000 THEN 'C级' ELSE '未定级' END as performance_level FROM employees_sales; ``` 这里通过比较销售金额大小来确定绩效级别,并最终形成一个新的列 `performance_level` 来表示每个员工的表现层次[^2]。 #### 结合 ORDER BY 进行排序 除了上述用途外,还可以利用 `CASE-ELSE-END` 实现更复杂的排序需求。例如按特定顺序排列某些类别项目: ```sql SELECT * FROM products ORDER BY CASE category WHEN 'Electronics' THEN 1 WHEN 'Books' THEN 2 WHEN 'Clothing' THEN 3 ELSE 4 END; ``` 这使得可以根据业务规则灵活调整记录之间的相对位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十六画生的博客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值