SQL条件控制(case when...then...else...end) 详细解释

 我来答
tanarri
2011-07-30 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8078万
展开全部
case when 条件 then 条件为真时的值 else 条件为假时的值 end

case具有两种格式。简单case函数和case搜索函数。
--简单case函数
case sex
when '1' then '男'
when '2' then '女'
else '其他' end
--case搜索函数
case when sex = '1' then '男'
when sex = '2' then '女'
else '其他' end
这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。
还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

--比如说,下面这段sql,你永远无法得到“第二类”这个结果
case when col_1 in ( 'a', 'b') then '第一类'
when col_1 in ('a') then '第二类'
else'其他' end

参考资料: http://hi.baidu.com/liusc/blog/item/faa4a3006e36f48ce850cd0a.html

日落的糖Kf
2017-12-02 · TA获得超过4万个赞
知道大有可为答主
回答量:3400
采纳率:0%
帮助的人:536万
展开全部

case 

when then  ---当满足when 中的条件,则返回then中的内容,并跳出case 语句

when then 

else   ---所有when 条件都失败,则返回else中的内容

end  

declare @a int 
set @a =90
select case 
       when @a <100 then '200'
       when @a <200 then '201'
       when @a >200 then '203'
       else '204'
       end 
 ----此语句返回结果为 200

请采纳,谢谢!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
项萱馨
2018-03-30 · TA获得超过2012个赞
知道小有建树答主
回答量:7
采纳率:0%
帮助的人:9550
展开全部

例如一个3条件取值的字段:

case when 条件1 then 取值1 when 条件2 then 取值2  else 取值3 end

when后接条件语句,then后为字段取值(数值或字符串等都可以,但类型须一致)。

CASE WHEN 及 SELECT CASE WHEN的用法: 

Case具有两种格式。简单Case函数和Case搜索函数。

1、 简单Case函数

CASE sex

WHEN '1' THEN '男'

WHEN '2' THEN '女'

ELSE '其他' END

2、Case搜索函数 

CASE WHEN sex = '1' THEN '男' 

WHEN sex = '2' THEN '女' 

ELSE '其他' END
种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

参考资料

新浪博客.新浪博客[引用时间2018-1-22]

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
祗想卑微de存在
推荐于2017-11-20 · TA获得超过201个赞
知道小有建树答主
回答量:163
采纳率:64%
帮助的人:21.6万
展开全部

例如一个3条件取值的字段:

case when 条件1 then 取值1 when 条件2 then 取值2  else 取值3 end

when后接条件语句,then后为字段取值(数值或字符串等都可以,但类型须一致)。

这篇博客写的比较详细,希望对您有用。网页链接

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
worldxa
2011-07-30 · TA获得超过1720个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:715万
展开全部
计算条件列表并返回多个可能结果表达式之一。

CASE 表达式有两种格式:

CASE 简单表达式,它通过将表达式与一组简单的表达式进行比较来确定结果。

CASE 搜索表达式,它通过计算一组布尔表达式来确定结果。

这两种格式都支持可选的 ELSE 参数。

CASE 可用于允许使用有效表达式的任意语句或子句。例如,可以在 SELECT、UPDATE、DELETE 和 SET 等语句以及 select_list、IN、WHERE、ORDER BY 和 HAVING 等子句中使用 CASE。

语法
Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Searched CASE expression:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END

参数
input_expression
使用简单 CASE 格式时所计算的表达式。input_expression 是任意有效的表达式。

WHEN when_expression
使用简单 CASE 格式时要与 input_expression 进行比较的简单表达式。when_expression 是任意有效的表达式。input_expression 及每个 when_expression 的数据类型必须相同或必须是隐式转换的数据类型。

THEN result_expression
当 input_expression = when_expression 计算结果为 TRUE,或者 Boolean_expression 计算结果为 TRUE 时返回的表达式。result expression 是任意有效的表达式。

ELSE else_result_expression
比较运算计算结果不为 TRUE 时返回的表达式。如果忽略此参数且比较运算计算结果不为 TRUE,则 CASE 返回 NULL。else_result_expression 是任意有效的表达式。else_result_expression 及任何 result_expression 的数据类型必须相同或必须是隐式转换的数据类型。

WHEN Boolean_expression
使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。

希望回答对你有帮助

参考资料: 计算条件列表并返回多个可能结果表达式之一。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式