1. case
1.1 语法结构
CASE expr
WHEN comparison_expr1 THEN return_expr1
WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr
END
1.2 表数据
select * from emp
id
emp_name
emp_salary
emp_level
1
a
10000
0
2
b
11000
1
3
c
9000
2
4
d
10000
2
5
e
13000
3
1.3 使用场景
根据员工等级给员工增加薪水:
0级员工薪水不变
1级员工薪水加1500
2级员工薪水加3000
3级员工薪水加5000
1.4 sql
SELECT id,emp_name,emp_salary,emp_level,
CASE emp_level
WHEN '1' THEN emp_salary+1500
WHEN '2' THEN emp_salary+3000
WHEN '3' THEN emp_salary+5000
ELSE emp_salary
END
"emp_newsalary"
FROM emp;
1.5 结果
id
emp_name
emp_salary
emp_level
emp_newsalary
1
a
10000
0
10000
2
b
11000
1
12500
3
c
9000
2
12000
4
d
10000
2
13000
5
e
13000
3
18000
2. ifnull()
2.1 语法结构
IFNULL(expression, alt_value)
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值
2.2 表数据
select * from emp
id
emp_name
emp_salary
emp_level
1
a
10000
0
2
b
11000
null
3
c
9000
2
4
d
10000
null
5
e
13000
3
2.3 使用场景
查询员工等级,如果为null显示为0级
2.4 sql
SELECT
id,
emp_name,
emp_level,
IFNULL(emp_level,0) AS emp_newlevel
FROM emp;
2.5 查询结果
id
emp_name
emp_level
emp_newlevel
1
a
0
0
2
b
null
0
3
c
2
2
4
d
null
0
5
e
3
3