Depuis le manuel
, il ressemble au if
la fonction est juste une forme moins flexible du case
expression. Par exemple, vous pourriez écrire :
select if(username = 'darxysaq', 'high', 'low') as awesomeness
Et l'équivalent avec case
:
select case when username = 'darxysaq' then 'high' else 'low' end as awesomeness
Mais case
est plus souple. Il autorise plus d'une branche, comme :
select case
when username = 'darxysaq' then 'high'
when username = 'john skeet' then 'medium'
else 'low'
end as awesomeness
Et il peut agir comme un switch
:
select case username
when 'darxysaq' then 'high'
when 'john skeet' then 'medium'
else 'low'
end as awesomeness
Maintenant le if
déclaration est une bête entièrement différente. Il s'agit d'une instruction de contrôle dans les procédures MySQL
. Le formulaire de déclaration ressemble à :
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; //
Voici un SQL Fiddle avec la version de l'instruction. On dirait que Mr Bean n'est pas tout ce qu'il est censé être !
Une dernière remarque :le case
expression est du SQL standard et fonctionne dans la plupart des bases de données. Le if
n'est pas du SQL standard et ne fonctionnera pas dans d'autres bases de données, comme SQL Server ou PostgreSQL.