CASE
-statement、IF
-statement、IF
-functionの違いを説明していただける方はいらっしゃいますか?
使用方法や「仕組み」の点での違いは何ですか?
ベストアンサー1
マニュアルより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 Fiddle を次に示します。ミスター・ビーンは、想像していたほどの人物ではないようですね!
最後に注意: このcase
式は標準 SQL であり、ほとんどのデータベースで機能します。関数if
は標準 SQL ではないため、SQL Server や PostgreSQL などの他のデータベースでは機能しません。