Do manual , parece que o
if
função é apenas uma forma menos flexível do case
expressão. Por exemplo, você poderia escrever:select if(username = 'darxysaq', 'high', 'low') as awesomeness
E o equivalente com
case
:select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Mas
case
é mais flexível. Permite mais de uma ramificação, como:select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
E pode agir como um
switch
:select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Agora o
if
declaração é uma besta totalmente diferente. É uma instrução de controle em procedimentos MySQL
. O formulário de declaração se parece com: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; //
Aqui está um SQL Fiddle com a versão da instrução. Parece que o Sr. Bean não é tudo o que ele inventou para ser!
Uma nota final:o
case
expression é SQL padrão e funciona na maioria dos bancos de dados. O if
A função não é SQL padrão e não funcionará em outros bancos de dados, como SQL Server ou PostgreSQL.