Aus dem Handbuch
, sieht es aus wie das if Die Funktion ist nur eine weniger flexible Form des case Ausdruck. Sie könnten zum Beispiel schreiben:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
Und das Äquivalent mit case :
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Aber case ist flexibler. Es erlaubt mehr als einen Zweig, wie:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
Und es kann wie ein switch wirken :
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Nun der if Aussage ist eine ganz andere Bestie. Es ist eine Steueranweisung in MySQL-Prozeduren
. Das Anweisungsformular sieht folgendermaßen aus:
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 ist ein SQL Fiddle mit der Anweisungsversion. Es sieht so aus, als wäre Mr. Bean nicht das, was er sich vorstellt!
Eine letzte Anmerkung:der case Ausdruck ist Standard-SQL und funktioniert in den meisten Datenbanken. Der if Funktion ist kein Standard-SQL und funktioniert nicht in anderen Datenbanken wie SQL Server oder PostgreSQL.