sql语句条件判断函数(流程控制函数)

在查询语句中,我们可能会遇到使用条件判断函数的情况,今天记录一下条件判断函数的使用。

名称 具体作用
IF(EXPR ,V1,V2) 如果满足条件返回第一个值,否则返回第二个
IFNULL(V1,V2) 为空时返回第一个,不为空返回第二个
CASE  WHEN EXP1 THEN V1  WHEN EXP2 THEN V2  ELSE V3 根据具体数据判断符合哪一个条件并返回符合条件的对应的值,例如:满足EXP1就返回V1

实例:

select id ,username ,score , if (score>60,'及格','不及格') as '考核' from student;

| id | username | score | 考核   |
+----+----------+-------+--------+
|  1 | king     |    95 | 及格   |
|  2 | king1    |    25 | 不及格 |
|  3 | king2    |    30 | 不及格 |
|  4 | king3    |    35 | 不及格 |
|  5 | king4    |    50 | 不及格 |
|  6 | king5    |    55 | 不及格 |
|  7 | king6    |    80 | 及格   |
|  8 | king7    |    90 | 及格   |
|  9 | king8    |    25 | 不及格 |
| 10 | king9    |    45 | 不及格 |
+----+----------+-------+--------+

select id ,username ,age , ifnull(age,'空') from cms_user;

+----+----------+------+------------------+
| id | username | age  | ifnull(age,'空') |
+----+----------+------+------------------+
|  1 | 张三     |   21 | 21               |
|  2 | 张三丰   |   31 | 31               |
|  3 | 章子怡   |   43 | 43               |
|  4 | long     |   41 | 41               |
|  6 | queen    |   66 | 66               |
|  7 | king     |   22 | 22               |
|  8 | blek     |   53 | 53               |
|  9 | rose     |    9 | 9                |
| 10 | lily     |   39 | 39               |
| 11 | john     |   72 | 72               |
| 12 | test1    | NULL | 空               |
| 13 | TEST2    |   18 | 18               |
+----+----------+------+------------------+

select id ,username ,score ,case when score>60 then '及格' when score=60 then '太险了' when score<60 then '有点差劲'end as '分段' from student;

+----+----------+-------+----------+
| id | username | score | 分段     |
+----+----------+-------+----------+
|  1 | king     |    95 | 及格     |
|  2 | king1    |    25 | 有点差劲 |
|  3 | king2    |    30 | 有点差劲 |
|  4 | king3    |    35 | 有点差劲 |
|  5 | king4    |    50 | 有点差劲 |
|  6 | king5    |    55 | 有点差劲 |
|  7 | king6    |    80 | 及格     |
|  8 | king7    |    90 | 及格     |
|  9 | king8    |    25 | 有点差劲 |
| 10 | king9    |    45 | 有点差劲 |
+----+----------+-------+----------+

还有一种case的形式如下:


case 变量或者表达式或者字段

when 常量1  then  值1

when 常量2  then  值2

....

else


end

注意区分两种形式的不同点

下面如果部门是30 显示1.1倍的工资,其他的一次类推,写法如下:

select department_id ,salary  case department_id when 30 then salary*1.1 when 40  then salary*1.2  when 50 then salary*1.3 else salary end from employees;

 注意的是这些函数的位置是在字段的时候使用,意思就是这些条件是对字段的操作,应该放在查询条件之前。

猜你喜欢

转载自blog.csdn.net/weixin_42575020/article/details/113336084