Från manualen
, det ser ut som if
funktion är bara en mindre flexibel form av case
uttryck. Du kan till exempel skriva:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
Och motsvarande med case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Men case
är mer flexibel. Det tillåter mer än en gren, som:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
Och den kan fungera som en switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Nu är if
uttalande är ett helt annat odjur. Det är en kontrollsats i MySQL-procedurer
. Utlåtandeformuläret ser ut så här:
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; //
Här är en SQL-fil med satsversionen. Det verkar som att Mr Bean inte är allt han har hittat på!
En sista anmärkning:case
expression är standard SQL och fungerar i de flesta databaser. if
Funktionen är inte standard SQL och fungerar inte i andra databaser, som SQL Server eller PostgreSQL.