Del manual
, parece el if
la función es solo una forma menos flexible del case
expresión. Por ejemplo, podrías escribir:
select if(username = 'darxysaq', 'high', 'low') as awesomeness
Y el equivalente con case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Pero case
es más flexible. Permite más de una rama, como:
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
Y puede actuar como un switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Ahora el if
declaración es una bestia completamente diferente. Es una sentencia de control en los procedimientos de MySQL
. El formulario de declaración se ve así:
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; //
Aquí hay un SQL Fiddle con la versión de declaración. ¡Parece que Mr Bean no es todo lo que se supone que es!
Una nota final:el case
expresión es SQL estándar y funciona en la mayoría de las bases de datos. El if
La función no es SQL estándar y no funcionará en otras bases de datos, como SQL Server o PostgreSQL.