From the manual,看起来if函数只是一个不太灵活的case表达式.例如,你可以写:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
与案例相当:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
但案例更灵活.它允许多个分支,例如:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
它可以像一个开关:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
CREATE FUNCTION GetAwesomeness (username varchar(50))
RETURNS varchar(20)
BEGIN
IF username = 'darxysaq' THEN
return 'high';
ELSEIF username = 'john skeet' THEN
return 'medium';
ELSE
return 'low';
END IF;
END; //
最后一点:case表达式是标准SQL,适用于大多数数据库. if函数不是标准SQL,不能在SQL Server或PostgreSQL等其他数据库中使用.