マニュアルから
、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フィドルです。 Bean氏は、彼が作り上げたすべてではないようです!
最後の注意:case
式は標準SQLであり、ほとんどのデータベースで機能します。 if
関数は標準SQLではなく、SQLServerやPostgreSQLなどの他のデータベースでは機能しません。