sql CASE()函数


CASE函数有两种用法:

用法1(只能实现简单的"等于"逻辑的判断):
CASE exp
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
......
ELSE defaultreturnvalue
END (别名)

CASE 函数对表达式exp进行测试,如果exp等于value1则返回returnvalue1;如果exp等于value2则返回returnvalue2;...以此类推,如果不符合所有的when条件则返回默认值defaultvalue

例:表Customer中的Level字段是整型类型,它记录了客户的级别,如果为1则是vip用户,2是高级客户,3是普通用户,显然前台不应该展示1,2,3,而是应该展示相应的文字,这里就可以使用CASE函数进行处理,sql语句如下:
select Name,
    case Level 
    when 1 then 'vip客户'
    when 2 then '高级客户'
    when 3 then '普通用户'
    end LevelName
from Customer

用法2CASE 
WHEN con1 THEN returnvalue1
WHEN con2 THEN returnvalue2
WHEN con3 THEN returnvalue3
......
ELSE defaultreturnvalue
END (别名)

con1,con2,con3...为条件表达式,如果条件con1为真则返回returnvalue1;如果条件con2为真则返回returnvalue2;如果条件con3为真则返回returnvalue3;以此类推,如果不符合所有的when条件,则返回默认值defaultreturnvalue。这种用法没有限定对一个表达式进行判断,因此使用起来更加灵活。

例:判断一个人的体重是否正常,如果体重小于100则认为太瘦,如果大于150则认为太胖,在100-150之间则认为是正常的,sql语句如下:
select 
    case when Weight<100 then 'thin'
    when Weight>150 then 'fat'
    else 'ok'
    end isnormal
from Person
SQL 中的 `CASE` 表达式并不是一个函数,而是一种条件表达式,它允许你在查询中执行复杂的条件逻辑处理。通过 `CASE` 表达式可以根据不同的条件返回不同的值。 ### CASE 表达式的语法 #### 简单 CASE 表达式 简单 `CASE` 表达式将某个表达式的结果与一系列当选项比较,并返回相应的结果: ```sql CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE default_result END ``` 例子: ```sql SELECT name, CASE department_id WHEN 10 THEN 'Sales' WHEN 20 THEN 'Engineering' WHEN 30 THEN 'HR' ELSE 'Unknown Department' END AS department_name FROM employees; ``` 这个例子会根据员工所属部门ID的不同给出对应的部门名称;如果部门 ID 不匹配任何一个已知的情况,则标记为 "未知" 部门。 #### 搜索 CASE 表达式 搜索 `CASE` 表达式可以评估多个布尔表达式并返回第一个为真的结果: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 例如: ```sql SELECT employee_id, salary, CASE WHEN salary < 4000 THEN 'Low Salary' WHEN salary BETWEEN 4000 AND 8000 THEN 'Medium Salary' WHEN salary > 8000 THEN 'High Salary' ELSE NULL END AS salary_level FROM employees; ``` 这段 SQL 将根据不同薪资范围给定标签。 ### 使用场景 - **数据转换**:比如将数字编码转成文字描述。 - **分组汇总**:按照特定规则对记录进行分类统计。 - **控制流程**:基于业务需求动态调整输出内容等。 希望以上信息能帮助您理解如何使用 SQL 的 `CASE` 结构来进行更强大的数据分析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值