定义:
第一种:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
第二种:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
语法解释:
case后面的 case_value 可以是任意值,也可以是某一个字段。when_value是要比对的值,如果case_value和when_value相等,则值为 statement,如果不等则为null(假如有else,怎显示else后的statement),
其实,整个语句的功能有点像swith case;
例1:
现有表event_register(随便找了个表,例子不是特别合适,主要用来是说明用法)
SELECT name, CASE name
WHEN '张三' THEN 1
WHEN '小明明' THEN 2
ELSE 3
END as aaa FROM event_register where order_id = 21312529
运行结果:
name | aaa |
小明明 | 2 |
张三 | 1 |
小黑 | 3 |
小黑23 | 3 |
例2:
SELECT name, CASE
WHEN name = '张三' THEN 1
WHEN name = '小明明' THEN 2
else 3
END as aaa FROM event_register where order_id = 21312529
运行结果:
name | aaa |
小明明 | 2 |
张三 | 1 |
小黑 | 3 |
小黑23 | 3 |
这里去掉了case_value ,而when_value的值变成了表达式,总的来说都差不多。