Fra manualen
, det ligner if
funktion er blot en mindre fleksibel form for case
udtryk. For eksempel kan du skrive:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
Og det tilsvarende med case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Men case
er mere fleksibel. Det tillader mere end én gren, f.eks.:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
Og den kan fungere som en switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Nu if
statement er et helt andet udyr. Det er en kontrolerklæring i MySQL-procedurer
. Opgørelsesformularen ser sådan ud:
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; //
Her er en SQL Fiddle med sætningsversionen. Det ser ud til, at hr. Bean ikke er alt, hvad han har fundet på at være!
En sidste bemærkning:case
expression er standard SQL og fungerer i de fleste databaser. if
funktion er ikke standard SQL og vil ikke fungere i andre databaser, såsom SQL Server eller PostgreSQL.