MySQL CASE WHEN语句

来源:互联网 发布:爆粉软件 编辑:程序博客网 时间:2024/05/18 02:31

转自: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 0
原创粉丝点击