От ръководството
, изглежда като if
функцията е просто по-малко гъвкава форма на case
изразяване. Например, можете да напишете:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
И еквивалентът с case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Но case
е по-гъвкав. Позволява повече от един клон, като:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
И може да действа като switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Сега if
изявлението е съвсем различен звяр. Това е контролно изявление в MySQL процедури
. Формулярът за изявление изглежда така:
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; //
Ето SQL Fiddle с версията на изявлението. Изглежда, че мистър Бийн не е всичко, за което е измислен!
Последна бележка:case
изразът е стандартен SQL и работи в повечето бази данни. if
функцията не е стандартен SQL и няма да работи в други бази данни, като SQL Server или PostgreSQL.