Dal manuale
, sembra il if
la funzione è solo una forma meno flessibile del case
espressione. Ad esempio, potresti scrivere:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
E l'equivalente con case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Ma case
è più flessibile. Consente più di un ramo, come:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
E può agire come un switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Ora il if
affermazione è una bestia completamente diversa. È una istruzione di controllo nelle procedure MySQL
. Il modulo di dichiarazione è simile a:
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; //
Ecco un SQL Fiddle con la versione dell'istruzione. Sembra che Mr Bean non sia tutto ciò per cui è stato creato!
Un'ultima nota:il case
l'espressione è SQL standard e funziona nella maggior parte dei database. Il if
la funzione non è SQL standard e non funzionerà in altri database, come SQL Server o PostgreSQL.