Z instrukcji
, wygląda jak if
funkcja jest po prostu mniej elastyczną formą case
wyrażenie. Na przykład możesz napisać:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
I odpowiednik case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Ale case
jest bardziej elastyczny. Pozwala na więcej niż jedną gałąź, na przykład:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
I może działać jak switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Teraz if
oświadczenie to zupełnie inna bestia. Jest to oświadczenie kontrolne w procedurach MySQL
. Formularz oświadczenia wygląda następująco:
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; //
Oto SQL Fiddle z wersją instrukcji. Wygląda na to, że Jaś Fasola to nie wszystko, za co został stworzony!
Ostatnia uwaga:case
wyrażenie jest standardowym SQL i działa w większości baz danych. if
funkcja nie jest standardowym SQL i nie będzie działać w innych bazach danych, takich jak SQL Server lub PostgreSQL.