Z příručky
, vypadá to jako if
function je jen méně flexibilní forma case
výraz. Můžete například napsat:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
A ekvivalent s case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Ale case
je flexibilnější. Umožňuje více než jednu větev, například:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
A může fungovat jako switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Nyní if
prohlášení je úplně jiné zvíře. Je to řídicí příkaz v procedurách MySQL
. Formulář výpisu vypadá takto:
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; //
Zde je SQL Fiddle s verzí příkazu. Vypadá to, že pan Bean není všechno, co si vymyslel!
Poslední poznámka:case
výraz je standardní SQL a funguje ve většině databází. if
funkce není standardní SQL a nebude fungovat v jiných databázích, jako je SQL Server nebo PostgreSQL.