sql >> データベース >  >> RDS >> Mysql

MySQLでCASEステートメントを使用する方法は?

    毎日膨大な量のデータが生成されるため、いくつかの条件に基づいてデータを取得することが重要です。 MySQLのCASEステートメントに関するこの記事では、このステートメントを使用して、単一の条件または複数の条件でデータを取得する方法について説明します。

    この記事では、次のトピックについて説明します。

    • SQLの概要
    • SQLの目的は何ですか?
    • MySQLのケース
    • MySQLでのCASEの構文
    • MySQLでのCASEの例

    SQLとは何ですか?

    SQLは、プログラミングで広く使用されているドメイン固有言語です。リレーショナルデータベース管理システム(RDBMS)に含まれるデータを管理するため、またはリレーショナルデータストリーム管理システムでストリーム処理を行うために設計されています。一般的に、SQLはデータベース内のデータの保存、操作、取得に役立つ標準言語です。

    SQLの目的は何ですか?

    SQLは、基本的にデータベースとの通信に使用されます。 ANSI(American National Standards Institute)によると、リレーショナルデータベース管理システム(RDBMS)の標準言語と見なされています。 SQLステートメントを使用して、データベースからのデータの更新、挿入、削除、取得などのタスクを実行します。

    MySQLのCASEステートメントとは何ですか?

    MySQLのCASEステートメントは、if/elseロジックを処理する方法です。これは一種の制御ステートメントであり、他のステートメントのセットの実行を制御するときにプログラミング言語のセルを形成します。

    CASEステートメントはさまざまな条件を通過し、最初の条件が満たされたときに値を返します(低水準言語のIF-THEN-ELSEステートメントのように)。条件が真になると、トラバースを停止して結果を返します。いずれの条件も当てはまらない場合は、ELSE句の値を返します。

    ELSE句がなく、いずれの条件も真でない場合は、単にNULLを返します。

    MySQLのCASEステートメントの構文

    基本構文:

    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        WHEN conditionx THEN resultx
        ELSE result
    END;
    

    CASE-Switchステートメントを実現するには2つの方法があります。

    • case_valueという変数を取得し、それをいくつかのstatement_listと照合します。
    CASE case_value
        WHEN when_value THEN statement_list
        [WHEN when_value THEN statement_list] ...
        [ELSE statement_list]
    END;
    
    • 変数の等式ではなくsearch_conditionを検討し、それに応じてstatement_listを実行します。
    CASE
        WHEN search_condition THEN statement_list
        [WHEN search_condition THEN statement_list] ...
        [ELSE statement_list]
    END;
    

    MySQLのCASEステートメントの例

    テーブルを考えてみましょう:STUDENT

    学生テーブル

    学生ID 名前 部門 性別
    001 Akash CS M
    002 ビクラム メック M
    003 チャンダン CS M
    004 Deepak CS M
    005 エリシア EC F
    006 フェルナンデス メック F

    例: 部門名を完全な形式に変更する必要があるシナリオを考えてみます。部門名がCSの場合は、コンピュータサイエンスに変換する必要があります。同様に、MechはMechanicalに変換し、ECはElectronicandCommunicationに変換する必要があります。

    サンプルクエリ

    CASE department_name
    WHEN 'CS'
      THEN UPDATE Student SET
      department='Computer Science';
     WHEN 'EC'
      THEN UPDATE Student SET
      department='Electronics and Communication';
     ELSE UPDATE Student SET
     department=’Mechanical';
    END;
    

    出力:

    対応する部門名は次のように名前が変更されます:

    学生ID 名前 部門 性別
    001 Akash コンピュータサイエンス M
    002 ビクラム 機械的 M
    003 チャンダン コンピュータサイエンス M
    004 Deepak コンピュータサイエンス M
    005 エリシア 電子通信と通信 F
    006 フェルナンデス 機械的 F

    例: Studentテーブルに対応するすべてのフィールドを選択する必要があるシナリオを考えてみます。 Genderフィールドに書き込まれる値は単一文字の値(M / F)であるため、Mを男性に、Fを女性に変更するクエリを作成しましょう。

    サンプルクエリ

    SELECT Student ID, Name, Department,
    CASE Gender
     WHEN'M' THEN 'Male'
     WHEN'F' THEN 'Female'
    END
    FROM Student;
    

    出力:

    学生ID 名前 部門 性別
    001 Akash コンピュータサイエンス 男性
    002 ビクラム 機械的 男性
    003 チャンダン コンピュータサイエンス 男性
    004 Deepak コンピュータサイエンス 男性
    005 エリシア 電子通信と通信 女性
    006 フェルナンデス 機械的 女性

    SQLのCASEスイッチ-カスタムソート

    サンプルクエリ

    CREATE PROCEDURE GetStudent(@ColToSort varchar(150)) AS
    SELECT StudentID, Name, Gender, Department
    FROM Student
    ORDER BY
      CASE WHEN @ColToSort='Department' THEN Department
           WHEN @ColToSort='Name' THEN Name
           WHEN @ColToSort='Gender' THEN Gender
           ElSE StudentID
      END;
    

    出力:

    出力は、指定されたフィールドに従ってソートされます。

    上記のプロシージャ(関数)は、varcharデータ型の変数を引数として取り、それに基づいて、Studentテーブルのタプルを並べ替えます。さらに、CASEステートメントを使用して条件を比較することもできます。

    例: contactIDとwebsiteIDを含むCONTACTSという名前のテーブルについて考えてみます。これらの詳細に従って、ユーザーは「TechOnTheNet.com」または「CheckYourMath.com」のリンクをナビゲートできます。

    サンプルクエリ

    SELECT
    CASE
    &nbsp;&nbsp;WHEN contact_id < 1000 THEN 'TechOnTheNet.com'
    &nbsp;&nbsp;WHEN website_id = 2 THEN 'CheckYourMath.com'
    END
    FROM contacts;
    

    MySQLでCaseステートメントを記述しているときに、最も重要な要素の1つは、「正しい方法でそれらを並べ替える」ことです。条件は、リストされている順序で評価されることを覚えておいてください。いずれかの条件が真になると、CASEステートメントは結果を返し、それ以上条件を評価しません。したがって、条件をリストする順序を選択するときは注意してください。

    MySQLについて詳しく知り、このオープンソースのリレーショナルデータベースについて知りたい場合は、インストラクター主導のライブトレーニングと実際のトレーニングが付属するMySQLDBA認定トレーニングを確認してください。ライフプロジェクトの経験。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。

    質問がありますか?この「MySQLのCASEステートメント」のコメントセクションにその旨を記載してください。折り返しご連絡いたします。


    1. Oracle SQLクエリ:時間に基づいてグループごとに最新の値を取得します

    2. PythonMySQLDBIN句で使用するためのリストの実装

    3. Oracleで複数行の挿入を行う最良の方法は?

    4. 外部サーバーに参加/プッシュダウンする前にサブクエリの評価を強制する方法