谁可以解释CASE声明,IF声明和IF函数之间的区别?
使用方法和"工作方式有何不同"?
答案 0 :(得分:27)
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.看起来憨豆先生并不是他所做的一切!
最后一点:case
表达式是标准SQL,适用于大多数数据库。 if
函数不是标准SQL,不能在SQL Server或PostgreSQL等其他数据库中使用。