1.相关测试sql
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`name` varchar(20) NOT NULL COMMENT '用户名称',
`age` int(11) NOT NULL COMMENT '年龄',
`gender` int(11) DEFAULT '0' COMMENT '性别,0:未知, 1:男,2:女',
`phone` varchar(16) DEFAULT NULL COMMENT '手机',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户表';
insert into user(`name`, `age`, `gender`, 'phone') values ('张三', '23', '1', '10086'), ('李四', '18', '0', '10010'), ('王五', '16', '2', null);
2.相关sql
2.1 IF()用法
- 语法:IF(expr1, expr2, expr3)
- 规则: 如果expr1为 true, 返回expr2, 否则返回expr3。
eg:
select u.name 姓名, IF(u.age >= 18, '是', '否') 是否成年 from user u;
2.2 IFNULL用法
- 语法: IFNULL(expr1, expr2)
- 规则: 如果 expr1 不为 NULL,就返回 expr1,否则返回 expr2。
eg:
select u.name 姓名, IFNULL(u.phone, '未知') 电话号码 from user u;
2.3 NULLIF用法
- 语法: NULLIF(expr1,expr2)
- 规则: 如果 expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1。
2.4 CASE用法
CASE 存在以下两种语法:
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
eg :
语法1:
select u.name, (CASE u.gender WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '未知' END) 性别 from user u;
语法2:
select u.name, (CASE WHEN u.gender = '1' THEN '男' WHEN u.gender = '2' THEN '女' ELSE '未知' END) 性别 from user u;