Uit de handleiding
, lijkt het op de if
functie is gewoon een minder flexibele vorm van de case
uitdrukking. U kunt bijvoorbeeld schrijven:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
En het equivalent met case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Maar case
is flexibeler. Het staat meer dan één vertakking toe, zoals:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
En het kan werken als een switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Nu de if
verklaring is een heel ander beest. Het is een controleverklaring in MySQL-procedures
. Het verklaringsformulier ziet er als volgt uit:
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; //
Hier is een SQL Fiddle met de instructieversie. Het lijkt erop dat Mr Bean niet alles is wat hij verzonnen heeft!
Een laatste opmerking:de case
expression is standaard SQL en werkt in de meeste databases. De if
functie is geen standaard SQL en werkt niet in andere databases, zoals SQL Server of PostgreSQL.