MySQL Case语句

137 阅读1分钟

简单的case语句

格式:
    CASE 表达式
    WHEN cond1 THEN value1
    WHEN cond2 THEN value2
    WHEN condN THEN valueN
    ELSE value
    END;

-   Cond1,cond2,…..,condN:表示在 CASE 语句列表中需要评估的条件。
-   Value1, value2, .....,valueN:表示满足条件时需要显示的各个值。
-   Value:表示 else 部分满足时显示的值。
egmysql> SELECT CASE WEEKDAY(NOW()) 
        WHEN 0 THEN '星期一'
        WHEN 1 THEN '星期二'
        WHEN 2 THEN '星期三'
        WHEN 3 THEN '星期四'
        WHEN 4 THEN '星期五' 
        WHEN 5 THEN '星期六'
        ELSE '星期天' 
        END AS       
        COLUMN1,NOW(),WEEKDAY(NOW()),DAYNAME(NOW())
        FROM table01;
        
+---------+---------------------+----------------+----------------+
| COLUMN1 | NOW()               | WEEKDAY(NOW()) | DAYNAME(NOW()) |
+---------+---------------------+----------------+----------------+
| 星期三  | 2023-04-26 10:27:21 |              2 |       Wednesday |
+---------+---------------------+----------------+----------------+

可搜索的case语句

简单 CASE 语句仅允许将表达式的值与一组不同的值进行匹配。 为了执行更复杂的匹配,如范围,则可以使用可搜索 CASE 语句。 可搜索 CASE 语句等同于 IF 语句,但是它的构造更加可读。

mysql> SELECT CASE 
        WHEN WEEKDAY(NOW())=0 THEN '星期一' 
        WHEN WEEKDAY(NOW())=1 THEN '星期二'  
        WHEN WEEKDAY(NOW())=2 THEN '星期三' 
        WHEN WEEKDAY(NOW())=3 THEN '星期四' 
        WHEN WEEKDAY(NOW())=4 THEN '星期五' 
        WHEN WEEKDAY(NOW())=5 THEN '星期六' 
        WHEN WEEKDAY(NOW())=6 THEN '星期天' 
        END AS 
        COLUMN1,NOW(),WEEKDAY(NOW()),DAYNAME(NOW())
        FROM table01;
        
+---------+---------------------+----------------+----------------+
| COLUMN1 | NOW()               | WEEKDAY(NOW()) | DAYNAME(NOW()) |
+---------+---------------------+----------------+----------------+
| 星期三  | 2023-04-26 10:29:51 |              2 |       Wednesday |
+---------+---------------------+----------------+----------------+