MySQL CASE WHEN语句

转自:http://www.baike369.com/content/?id=5692

MySQL CASE语句

CASE语句是另一个进行条件判断的语句。它可以实现比IF语句更复杂的条件判断。


第一种CASE语句格式

基本语法格式如下:

CASE case_expr
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list]...
    [ELSE statement_list]
END CASE

其中,case_expr参数表示条件判断的表达式,决定了哪一个WHEN子句会被执行;when_value参数表示表达式可能的值,如果某个when_value表达式与case_expr表达式结果相同,则执行对应THEN关键字后的statement_list中的语句;statement_list参数表示不同when_value值的执行语句。

实例1:

CASE流程控制语句的第1种格式。SQL代码如下:

CASE age
    WHEN 18 THEN SET @count1=@count1+1;
    ELSE SET @count2=@count2+1;
END CASE;

其中,“@”的用法可以阅读“MySQL定义条件和处理程序”这篇文章。

如果age的值为18,count1的值加1;否则count2的值加1。

CASE语句都要使用END CASE结束。

实例2:

使用CASE语句的第1种格式,判断val的值等于1、等于2,或者两者都不等。SQL语句如下:

CASE val
    WHEN 1 THEN SELECT 'val is 1';
    WHEN 2 THEN SELECT 'val is 2';
    ELSE SELECT 'val is not 1 or 2';
END CASE;

当val值为1时,输出字符串“val is 1”;当val值为2时,输出字符串“val is 2”;否则输出字符串“val is not 1 or 2”。


第二种CASE语句格式

基本语法格式如下:

CASE
    WHEN expr_condition THEN statement_list
    [WHEN expr_condition THEN statement_list]...
    [ELSE statement_list]
END CASE

其中,expr_condition参数表示条件判断语句;statement_list参数表示不同条件的执行语句,该语句中,WHEN语句将被逐个执行,直到某个expr_condition表达式为真,则执行对应THEN关键字后面的statement_list语句;如果没有条件匹配,ELSE子句里的语句将被执行。

提示:

这里介绍的用在存储程序(存储过程或存储函数)里的CASE语句与“控制流程函数”里描述的SQL CASE表达式的CASE语句有轻微不同。这里的CASE语句不能有ELSE NULL子句,并且用END CASE替代END来终止。

实例1

CASE流程控制语句的第2种格式。SQL代码如下:

CASE
    WHEN age=18 THEN SET @count1=@count1+1;
    ELSE SET @count2=@count2+1;
END CASE;

如果age的值为18,count1的值加1;否则count2的值加1。

实例2

使用CASE语句的第2种格式,判断val是否为空、小于0、大于0或者等于0。SQL语句如下:

CASE
    WHEN val IS NULL THEN SELECT 'val is NULL';
    WHEN val<0 THEN SELECT 'val is less than 0';
    WHEN val>0 THEN SELECT 'val is greater than 0';
    ELSE SELECT 'val is 0';
END CASE;

当val值为空,输出字符串“val is NULL”;当val值小于0时,输出字符串“val is less than 0”;当val值大于0时,输出字符串“val is greater than 0”;否则输出字符串“val is 0”。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值