【SQL Server】CASE 使い方
CASE 式とは
CASE 式 は WHEN で条件を指定して上から順番にチェックしていき、最初に TRUE となる条件の結果を返します。
どの条件とも合致しない場合、
- ELSE が指定されている場合は ELSE の結果を返します。
- ELSE が指定されていない場合は NULL を返します
書き方
書き方は単純CASE 式と検索CASE 式の2通りの書き方があります。
今から覚えるって人は、まず、検索CASE式を覚えましょう。
理由は単純に条件式が書きやすくて、読みやすいからです。
単純CASE式だと下記の例のように単純な条件であれば、良いのですが、複数の条件を書くと途端に読みにくくなります。
あと、経験上ですが、検索CASE式で書いてあるクエリの方が多い気がします。
実行例
--テーブルの準備
CREATE TABLE 食べ物
(
Id int identity(1, 1)
,名前 varchar(20)
,種類 varchar(20)
);
--データの準備
INSERT INTO 食べ物 VALUES
('りんご', '果物' ),
('みかん', '' ),
('ピーマン', '野菜' ),
('パン', NULL )
SELECT
*,
-----------------------
-- 単純 CASE 式
CASE 種類
WHEN '果物' THEN '美味しい'
WHEN '野菜' THEN 'まずい'
ELSE 'その他'
END AS 単純CASE式,
-----------------------
-- 検索 CASE 式
CASE WHEN 種類 = '果物' THEN '美味しい'
WHEN 種類 = '野菜' THEN 'まずい'
ELSE 'その他'
END AS 検索CASE式
FROM 食べ物
DROP TABLE 食べ物
| Id | 名前 | 種類 | 単純CASE式 | 検索CASE式 |
| 1 | りんご | 果物 | 美味しい | 美味しい |
| 2 | みかん | その他 | その他 | |
| 3 | ピーマン | 野菜 | まずい | まずい |
| 4 | パン | NULL | その他 | その他 |
CASE式のネスト
CASE式はネストしてさらに条件分岐させることが、可能ですが、最大ネスト数があって10階層まで可能です。それ以上ネストするとエラーになります。
これは、エラーになる例です。10までで止めておくとエラーになりません。
SELECT
CASE WHEN 1 = 1 THEN
CASE WHEN 2 = 2 THEN
CASE WHEN 3 = 3 THEN
CASE WHEN 4 = 4 THEN
CASE WHEN 5 = 5 THEN
CASE WHEN 6 = 6 THEN
CASE WHEN 7 = 7 THEN
CASE WHEN 8 = 8 THEN
CASE WHEN 9 = 9 THEN
CASE WHEN 10 = 10 THEN
CASE WHEN 11 = 11 THEN 11
END
END
END
END
END
END
END
END
END
END
END

コメント