[TOC]
>[success] ## if:函数
> expr1如果条件成立返回,expr1
> expr2如果条件不成立,返回expr2
:-: ![](https://img.kancloud.cn/5c/d4/5cd45fbba97785688b1537131cf4aaf2_447x60.png)
```sql
SELECT IF(10 > 5,'大于','小于');
SELECT IF(10 < 5,'大于','小于');
```
结果:
           大于
           小于
<br>
```sql
SELECT
first_name,
commission_pct,
IF
(commission_pct IS NULL,'没奖金 难过','有奖金 哈哈哈哈') 备注
FROM
gin_employees;
```
```sql
Steven 没奖金 难过
Neena 没奖金 难过
Lex 没奖金 难过
Alexander 没奖金 难过
Bruce 没奖金 难过
David 没奖金 难过
Valli 没奖金 难过
Diana 没奖金 难过
Nancy 没奖金 难过
Daniel 没奖金 难过
John 没奖金 难过
Ismael 没奖金 难过
Jose Manuel 没奖金 难过
Luis 没奖金 难过
Den 没奖金 难过
Alexander 没奖金 难过
Shelli 没奖金 难过
Sigal 没奖金 难过
Guy 没奖金 难过
Karen 没奖金 难过
Matthew 没奖金 难过
Adam 没奖金 难过
Payam 没奖金 难过
Shanta 没奖金 难过
Kevin 没奖金 难过
Julia 没奖金 难过
Irene 没奖金 难过
James 没奖金 难过
Steven 没奖金 难过
Laura 没奖金 难过
Mozhe 没奖金 难过
James 没奖金 难过
TJ 没奖金 难过
Jason 没奖金 难过
Michael 没奖金 难过
Ki 没奖金 难过
Hazel 没奖金 难过
Renske 没奖金 难过
Stephen 没奖金 难过
John 没奖金 难过
Joshua 没奖金 难过
William 0.15 有奖金 哈哈哈哈
Elizabeth 0.15 有奖金 哈哈哈哈
Sundita 0.10 有奖金 哈哈哈哈
Michael 没奖金 难过
Pat 没奖金 难过
Susan 没奖金 难过
Hermann 没奖金 难过
Shelley 没奖金 难过
William 没奖金 难过
```
<br>
<br>
>[success] ## case:函数写法1
> case函数类似于java中的switch
case语法:
```sql
case 要判断的字段或表达式
when常量1 then要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
else 要显示的值n或语句n;
end
```
### **case-案例1:**
查询员工的工资,要求
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门,显示的工资为原工资
```sql
SELECT
salary,
department_id,
CASE
department_id
WHEN 30 THEN
salary * 1.1
WHEN 40 THEN
salary * 1.2
WHEN 50 THEN
salary * 1.3
WHEN 60 THEN
salary * 1.4 ELSE salary
END AS 新工资
FROM
gin_employees;
```
<br>
<br>
## **case-函数写法2:**
case语法
```sql
case. I
when条件1 then 要显示的值1或语句1
when条件2 then 要显示的值2或语句2
else要显示的值n或语句n
end .
```
<br>
### case-案例1:
查询员工的工资的情况
如果工资>20000,显示A级别.
如果工资>15000,显示B级别
如果工资>10000,显示c级别
否则,显示D级别
```sql
SELECT salary,
case
when salary > 20000 then 'A级别'
when salary > 15000 then 'B级别'
when salary > 10000 then 'C级别'
else 'D级别'
end as '工资级别'
from gin_employees;
```