MySQL - CASE と IF ステートメントと IF 関数 質問する

MySQL - CASE と IF ステートメントと IF 関数 質問する

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 などの他のデータベースでは機能しません。

おすすめ記事