首页 > 编程笔记 > MySQL笔记 阅读:14

MySQL CASE流程控制语句的用法(附带实例)

流程控制语句用来根据条件控制语句的执行。MySQL 中用来构造控制流程的语句有 IF 语句、CASE 语句、LOOP 语句、LEAVE 语句、ITERATE 语句、REPEAT 语句和 WHILE 语句。

每个流程中可能包含一个单独语句,也可能是使用 BEGIN ... END 构造的复合语句,构造可以被嵌套。

CASE 语句有两种格式。第 1 种格式如下:
CASE case_expr
   WHEN when_value THEN statement_list
   [WHEN when_value THEN statement_list] ...
   [ELSE statement_list]
END CASE

【实例 1】使用 CASE 流程控制语句的第以种格式,判断 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

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

【实例 2】使用 CASE 流程控制语句的第二种格式,判断 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;

相关文章