请问有谁能够解释一下CASE
语句、IF
语句和IF
函数之间的区别?
在使用和“工作原理”方面,它们有何不同?
请问有谁能够解释一下CASE
语句、IF
语句和IF
函数之间的区别?
在使用和“工作原理”方面,它们有何不同?
从手册上看,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
同时它也可以像一个开关
一样起作用:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
现在,if
语句是完全不同的一种东西。它是MySQL存储过程中的控制语句。该语句的形式如下:
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; //
这里有一份带语句版本的 SQL Fiddle。看起来Mr Bean不像他所宣扬的那样厉害!
最后注意: case
表达式是标准SQL,适用于大多数数据库。 if
函数不是标准SQL,不能在其他数据库中使用,例如SQL Server或PostgreSQL。