mysql

-- mysql if表达式
-- if(expr1, expr2, expr3):expr1为true,返回expr2,反之expr3
select user_email, if(user_email='gsdhj@qq.com', 'qq', '360') as result from `user` limit 2;

-- ifnull(expr1, expr2):在 expr1 的值不为 NULL的情况下都返回 expr1,否则返回 expr2,如下:
select ifnull('', '为null返回指定值') as `title`;
select ifnull(null, '为null返回指定值') as `title`;

-- nullif(expr1, expr2):如果两个参数相等则返回NULL,否则返回第一个参数的值expr1
select nullif(user_party, user_nation) as result from `user` limit 10;
select nullif('1', '1') as result from `user` limit 10;

-- if then else 逻辑运算
-- 在sql语句中,有两种形式
-- 1、simple case
select 
	case user_party 
		when 1 then '汉族'
		when 2 then '满族'
		when 3 then '蒙古族'
		else '新疆维吾尔族'
	end,
	user_name
from `user` limit 10;

-- 2、searched case
select 
	case 
		when user_nation = 1 then '群众1'
		when user_nation = 2 then '群众'
		else '无'
	end,
	user_name
from `user` limit 10;


-- if else 流程控制语句,在存储过程中使用
delimiter $
drop procedure if exists pro2;
create procedure pro2(
	param int
)
begin
	set param = ifnull(param, 1);
	if param=1 then
		select * from `user` where user_id = 10;
	elseif param=2 then
		select * from `user` where user_id = 20;
	else
		select * from `user` where user_id = 30;
	end if;
end;
$
delimiter ;
call pro2(null);
call pro2(3);


-- user_gender 从1【男】2【女】3【未知】 从1开始的
select elt(user_gender, '男', '女', '未知') from `user` limit 10;

  

原文地址:https://www.cnblogs.com/gygtech/p/13666573.html