SQL ServerのCASEステートメントの使い方を徹底解説!基本構文と実例まとめ
この記事では、SQL ServerにおけるCASEステートメント(条件分岐関数)の使い方について、具体的な構文とサンプルコードを交えながら詳しく解説します。実例を見ながら学ぶことで、機能をしっかりと把握できるようになるでしょう。
CASEステートメントとは
CASEステートメントは、SQL Serverで条件分岐を設定するために使用され、IF-THEN-ELSE文と同様の役割を果たします。
CASEには2つの形式があります。
- 単純CASE関数(Simple CASEとも呼ばれます)
- 検索CASE関数(Searched CASEとも呼ばれます)
それぞれの特徴は以下の通りです。
- Simple CASEは、1つの式を一連の単純式と順に比較して結果を判定します。
- Searched CASEは、一連のブール式(論理式)を評価して結果を判定します。
- どちらの形式でもELSE句をサポートしています(ただし必須ではありません)。
構文
SQL ServerでCASEステートメントを使用するには、以下の構文を使います。
Simple CASE(単純CASE)
CASE 入力式
WHEN 式_1 THEN 結果_1
WHEN 式_2 THEN 結果_2
.
WHEN 式_n THEN 結果_n
ELSE その他の結果
END
または、Searched CASE(検索CASE)
CASE
WHEN 条件_1 THEN 結果_1
WHEN 条件_2 THEN 結果_2
.
WHEN 条件_n THEN 結果_n
ELSE その他の結果
END
パラメータの説明:
- 入力式: 各値と比較される対象となる式です。
- 式_1、式_2、…式_n: 入力式と順番に比較される式です。いずれかの式が入力式と一致すると、CASEはその後の処理を実行し、それ以降の比較は行いません。
- 条件_1、条件_2、…条件_n: 評価対象となる条件で、記述された順に評価されます。ある条件がTRUEと判定された時点で、CASEはその結果を返し、残りの条件は評価されません。すべての条件は同じデータ型である必要があります。
- 結果_1、結果_2、…結果_n: 条件がTRUEと評価された場合に返される結果です。すべての値は同じデータ型である必要があります。
注意点:
- TRUEとなる一致が見つからない場合、CASEステートメントはELSE句の結果を返します。
- ELSE句がなく、かつTRUEとなる条件も存在しない場合、CASEステートメントはNULLを返します。
- 条件は記述された順に評価されます。ある条件がTRUEと判定された時点で、CASEステートメントはその結果を返し、それ以降の条件は評価されません。
- CASEは、SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、SQL Server 2005以降の各バージョンで使用できます。
使用例
ここからは、SQL ServerにおけるCASEステートメントの具体的な使用例を見ていきましょう。
例1:Simple CASE(単純CASE)
TipsMake.comウェブサイトのカテゴリを、変換テーブルのCode列をもとに判定するケースを想定します。
- Code = '01' の場合は「Laptrinh-TipsMake.com」
- Code = '02' の場合は「Congnghe-TipsMake.com」
- Code = '03' の場合は「Cuocsong-TipsMake.com」
- 上記以外(01〜03以外)の場合は「Khoahoc-TipsMake.com」
SELECT tenchuyenmuc, Code,
(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'
WHEN 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code;
実行結果:
| tenchuyenmuc | Code | Chuyenmuc |
|---|---|---|
| SQL Server | 01 | Laptrinh-TipsMake.com |
| Linux | 02 | Congnghe-TipsMake.com |
| Python | 01 | Laptrinh-TipsMake.com |
| JavaScript | 01 | Laptrinh-TipsMake.com |
| Android | 02 | Congnghe-TipsMake.com |
| Giai tri | 03 | Cuocsong-TipsMake.com |
| Khoa hoc | 04 | Khoahoc-TipsMake.com |
| Kham pha Science | 05 | Khoahoc-TipsMake.com |
例2:Searched CASE(検索CASE)
SELECT tenchuyenmuc,
CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
ELSE 'Khoahoc-TipsMake.com'
END
FROM chuyenmuc;
また、ELSE句を省略して次のように書くこともできます。
SELECT tenchuyenmuc, Code,
(CASE code
WHEN 01 THEN 'Laptrinh-TipsMake.com'
WHEN 02 THEN 'Congnghe-TipsMake.com'
WHEN 03 THEN 'Cuocsong-TipsMake.com'
END) AS Chuyenmuc
FROM chuyenmuc
ORDER BY Code;
または:
SELECT tenchuyenmuc,
CASE
WHEN code = 01 THEN 'Laptrinh-TipsMake.com'
WHEN code = 02 THEN 'Congnghe-TipsMake.com'
WHEN code = 03 THEN 'Cuocsong-TipsMake.com'
END
FROM chuyenmuc;
ELSE句を省略した場合、どの条件もTRUEにならなければ、CASEステートメントはNULLを返す点に注意してください。
例3:複数の条件を比較する
次の例は、CASEステートメントを使って異なる条件を比較する方法を示したものです。
SELECT
CASE
WHEN code < 2 THEN 'Laptrinh-TipsMake.com'
WHEN code = 2 THEN 'Congnghe-TipsMake.com'
END
FROM chuyenmuc;
条件は記述された順に順番に比較されるという点を覚えておきましょう。ある条件がTRUEと判定された時点で、CASEステートメントはすぐにその結果を返し、他の条件は評価されません。そのため、条件を記述する順序は慎重に設計する必要があります。
SQL ServerのCASE関数については、さらに具体的な使用例もあわせて参考にしてみてください。
-
SQL ServerのIF...ELSE文とは?基本構文と実践例をわかりやすく解説
他のプログラミング言語と同様に、SQL Serverでも条件分岐を行うためのIF...ELSEコマンドが用意されています。本記事では、IF...ELSE文の構文の使い方を、わかりやすい具体例とともに詳しく解説します。 概要 SQL ServerにおけるIF...ELSE文は、条件に応じて処理を分岐させるために使用されるステートメントです。条件がTRUE(真)と評価された場合は一方的な処理を実行し、FALSE(偽)と評価された場合には別の処理を実行します。 IF...ELSE文の構文 SQL ServerでIF...ELSEによる分岐処理を行うには、以下の構文に従って記述します。 IF 条件式{
-
SQL ServerのINSERT文の使い方!基本構文から実例まで徹底解説
SQL Server(Transact-SQL)におけるINSERT文は、テーブルに1件または複数件のレコードを挿入するための基本的なDML文です。本記事では、INSERT文の基本構文から、複数行の一括挿入、DEFAULT VALUESやSELECT文との組み合わせといった応用例まで、わかりやすく解説します。 INSERTコマンドの基本構文 1件のレコードを挿入する場合 最もシンプルな形式は、VALUESキーワードを使って1件のレコードを挿入する方法です。 INSERT INTO テーブル名 (列名1, 列名2, …) VALUES (値1, 値2, …); 完全な構文では、各列に代入する