SQL利用Case When Then多条件判断

本文展示了两个使用SQL语句中的Case When Then结构进行多条件判断的例子。第一个例子演示了如何根据State和JoinState字段的不同组合来设置usestate字段的值;第二个例子则展示了如何基于score字段的范围来确定用户的称号,并统计每个用户的提问数量。
SQL利用Case When Then多条件判断 (1) Select top 100 State,JoinState, (case when State=1 and Joinstate=0 then 2 when State=1 and JoinState=1 then 1 else 0 end) as usestate from UserInfo (2) select ID,Username,namer=(case when(score<='50') then '实习' when(score>'50' and score<='500' ) then '赤脚医生' when(score>'500' and score<='1000' ) then '村卫生员' when(score>'1000' and score<='1500' ) then '乡卫生员' when(score>'1500' and score<='2000' ) then '镇卫生员' when(score>'2000' and score<='3000' ) then '医师' when(score>'3000' and score<='5000' ) then '主治医师' when(score>'5000' and score<='10000' ) then '副主任医师' when(score>'10000' and score<='20000' ) then '主任医师' when(score>'20000' and score<='50000' ) then '健康大使' else '健康大使' end ), (SELECT count(id) FROM jk01_YiWen_Question WHERE UserID = dbo.jk01_Member.ID) as questionnum from jk01_Member
### 如何在 SQL 中使用 CASE WHEN 处理多条件判断 #### 使用 `CASE` 表达式的两种形式 SQL 提供了两种不同类型的 `CASE` 表达式用于处理多条件判断1. **简单 `CASE` 函数** 这种方式适用于简单的相等情况比较。语法结构如下所示[^3]: ```sql CASE column_name WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE default_result END ``` 例如,对于性别字段的转换可以这样写: ```sql SELECT username, pickname, CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END AS sexName FROM users; ``` 2. **复杂 `CASE` 或者称为搜索 `CASE`** 当需要更复杂的条件表达时,比如组合多个列或应用不同的运算符来进行判断,则应采用这种形式。其基本格式为: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 实际例子中可能会像下面这样使用: ```sql SELECT (CASE WHEN age >= 18 AND city = 'Beijing' THEN 'Adult in Beijing' WHEN age < 18 AND city != 'Shanghai' THEN 'Minor not in Shanghai' ELSE 'Other cases' END) AS description FROM people_table; ``` #### 应用场景扩展 除了上述基础用法外,`CASE` 表达式还可以应用于各种上下文中,包括但不限于聚合函数内、更新操作以及删除记录前的数据筛选等场合[^2]。 例如,在统计特定条件下的人数时可结合 `COUNT()` 聚合函数一起使用: ```sql SELECT COUNT(CASE WHEN status = 'active' THEN id END) AS active_users_count FROM user_status; ``` 又或者是执行有条件的数据修改任务时: ```sql UPDATE employees SET salary_increase = ( CASE WHEN performance_rating > 90 THEN salary * 0.15 WHEN performance_rating BETWEEN 70 AND 90 THEN salary * 0.1 ELSE salary * 0.05 END); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值