毎日膨大な量のデータが生成されるため、いくつかの条件に基づいてデータを取得することが重要です。 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 WHEN contact_id < 1000 THEN 'TechOnTheNet.com' WHEN website_id = 2 THEN 'CheckYourMath.com' END FROM contacts;
MySQLでCaseステートメントを記述しているときに、最も重要な要素の1つは、「正しい方法でそれらを並べ替える」ことです。条件は、リストされている順序で評価されることを覚えておいてください。いずれかの条件が真になると、CASEステートメントは結果を返し、それ以上条件を評価しません。したがって、条件をリストする順序を選択するときは注意してください。
MySQLについて詳しく知り、このオープンソースのリレーショナルデータベースについて知りたい場合は、インストラクター主導のライブトレーニングと実際のトレーニングが付属するMySQLDBA認定トレーニングを確認してください。ライフプロジェクトの経験。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。
質問がありますか?この「MySQLのCASEステートメント」のコメントセクションにその旨を記載してください。折り返しご連絡いたします。