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.