SQL CASE ステートメント
の CASE のステートメント SQL を組み込むことができる多用途の条件式です。 条件付きロジック クエリ内で直接。これにより、特定の条件に基づいて特定の結果を返すことができ、動的なクエリ出力が可能になります。必要かどうか 新しい列を作成する 既存のものを変更するか、クエリの出力をカスタマイズします。 CASE ステートメント すべてを処理できます。
この記事では、 SQL CASE ステートメント この機能を活用して SQL クエリを改善する方法を示す明確な例と使用例を示して詳しく説明します。
SQLのCASE文
- の
CASEのステートメント SQL は、クエリ内で条件付きロジックを実行できるようにする条件式です。
- これは通常、条件付きロジックに基づいて新しい列を作成し、カスタム値を提供したり、特定の条件に基づいてクエリ出力を制御したりするために使用されます。
- どの条件も真でない場合、 それ以外 部分が実行されます。 ELSE 部分がない場合は戻ります。 NULL。
構文:
SQL で CASE ステートメントを使用するには、次の構文を使用します。
CASE ケースの値
WHEN 条件 THEN 結果 1
WHEN 条件 THEN 結果 2
...
それ以外の結果
エンドケース;
SQL CASE ステートメントの例
より深く理解するために、SQL の CASE ステートメントの例をいくつか見てみましょう。
例で使用するデモ SQL テーブルを作成しましょう。
デモ SQL データベース
SQL CASE ステートメントの例では、このサンプル SQL テーブルを使用します。
| 顧客ID | 顧客名 | 苗字 | 国 | 年 | 電話 |
|---|---|---|---|---|---|
| 1 | 疑い | タークール | インド | 23 | xxxxxxxxxx |
| 2 | 安全 | チョプラ | オーストラリア | 21 | xxxxxxxxxx |
| 3 | ナヴィーン | トゥラシ | スリランカ | 24 | xxxxxxxxxx |
| 4 | アディティア | アルパン | オーストリア | 21 | xxxxxxxxxx |
| 5 | ニシャント。サルチチャス S.A. | ジャイナ教 | スペイン | 22 | xxxxxxxxxx |
次の MySQL クエリを記述することで、システム内に同じデータベースを作成できます。
CREATE TABLE Customer( CustomerID INT PRIMARY KEY CustomerName VARCHAR(50) LastName VARCHAR(50) Country VARCHAR(50) Age int(2) Phone int(10) ); -- Insert some sample data into the Customers table INSERT INTO Customer (CustomerID CustomerName LastName Country Age Phone) VALUES (1 'Shubham' 'Thakur' 'India''23''xxxxxxxxxx') (2 'Aman ' 'Chopra' 'Australia''21''xxxxxxxxxx') (3 'Naveen' 'Tulasi' 'Sri lanka''24''xxxxxxxxxx') (4 'Aditya' 'Arpan' 'Austria''21''xxxxxxxxxx') (5 'Nishant. Salchichas S.A.' 'Jain' 'Spain''22''xxxxxxxxxx');例 1: 単純な CASE 式
この例では CASE ステートメントを使用します
クエリ:
SELECT CustomerName Age CASE WHEN Country = 'India' THEN 'Indian' ELSE 'Foreign' END AS Nationality FROM Customer;出力:
| 顧客名 | 年 | 国籍 |
|---|---|---|
| 疑い | 23 | インド人 |
| 安全 | 21 | 外国 |
| ナヴィーン | 24 | 外国 |
| アディティア | 21 | 外国 |
| ニシャント。サルチチャス S.A. | 22 | 外国 |
例 2: 複数の条件がある場合の SQL CASE
複数の条件を使用することで、CASE ステートメントに複数の条件を追加できます。 いつ 条項。
クエリ:
SELECT CustomerName Age CASE WHEN Age> 22 THEN 'The Age is greater than 22' WHEN Age = 21 THEN 'The Age is 21' ELSE 'The Age is over 30' END AS QuantityText FROM Customer;出力:
| 顧客名 | 年 | 数量テキスト |
|---|---|---|
| 疑い | 23 | 年齢は22歳以上です |
| 安全 | 21 | 年齢は21歳です |
| ナヴィーン | 24 | 年齢は22歳以上です |
| アディティア | 21 | 年齢は21歳です |
| ニシャント。サルチチャス S.A. | 22 | 年齢は30歳以上です |
例 3: ORDER BY 句を含む CASE ステートメント
CustomerID CustomerName LastName Country Age and Phone を含む Customer テーブルを考えてみましょう。 Customer テーブルのデータを確認するには、 注文方法 CASE ステートメントで句を使用します。
クエリ:
SELECT CustomerName Country FROM Customer ORDER BY (CASE WHEN Country IS 'India' THEN Country ELSE Age END);出力:
| 顧客名 | 国 |
|---|---|
| 安全 | オーストラリア |
| アディティア | オーストリア |
| ニシャント。サルチチャス S.A. | スペイン |
| ナヴィーン | スリランカ |
| 疑い | インド |
CASE ステートメントに関する重要なポイント
- SQL CASE ステートメントは、指定された条件に基づいてさまざまなクエリを実行できるようにする条件式です。
- 常に存在する必要があります 選択 CASE ステートメント内で。
- END ELSEは オプションのコンポーネントですが、 そのとき これらのケースは CASE ステートメントに含める必要があります。
- 任意の条件演算子を使用して、任意の条件ステートメントを作成できます (例: どこ ) WHEN と THEN の間。これには、次を使用して複数の条件ステートメントをつなぎ合わせることが含まれます。 そして または。
- 未対処の条件に対抗するために、複数の WHEN ステートメントと ELSE ステートメントを含めることができます。
結論
の CASE ステートメントは、SQL クエリに条件付きロジックを組み込むための堅牢なメカニズムを提供します。このステートメントを使用すると、さまざまな条件を処理し、クエリの出力を効果的にカスタマイズできます。実装方法を理解する CASE 式を使用すると、より高度なデータ操作とレポートを実行できるため、SQL クエリがより動的になり、さまざまなシナリオに対応できるようになります。