定义:
第一种:
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的值变成了表达式,总的来说都差不多。