谁能解释一下CASE-statement、IF-statement和IF-function之间的区别?
在用法和“如何工作”方面有什么不同?
发布于 2015-05-06 05:02:38
From the manual,看起来if函数只是case表达式的一种不太灵活的形式。例如,您可以这样写:
select if(username = 'darxysaq', 'high', 'low') as awesomeness与case等效
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness但是case更加灵活。它允许多个分支,例如:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness它可以像一个switch一样工作
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness现在,if语句完全不同了。它是一个control statement in MySQL procedures。语句表单如下所示:
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; //Here's a SQL Fiddle with the statement version.看起来Bean先生并不像他想象的那样好!
最后要注意的是:case表达式是标准的SQL语句,适用于大多数数据库。if函数不是标准的SQL,在SQL Server或PostgreSQL等其他数据库中不起作用。
https://stackoverflow.com/questions/30047983
复制相似问题