SQLのCASE式
条件分岐ができる
式なので、全体で一つの値を返す
だから SELECT
句、 WHERE
句、 HAVING
句などどこにでも書ける
( WHERE
句ではなく) SELECT
句で条件分岐したSQLを書けるようになる
WHEN
がダメという話ではなく、 WHEN
での条件分岐がダメ
ダメではないが

CASEなしでは複数のSQLで実現していたことが、1つの式で書けたりする
パフォーマンスに有利
全ての WHEN
句の返り値の型は同じである必要がある
END
を忘れないように注意
ELSE
句は書くように気をつける
ELSE
はないと ELSE NULL
として扱われるので型の狂いによりバグる可能性がある
2種類ある
逆は成り立たない
SQLCASE gender
WHEN '1' THEN 'man'
WHEN '2' THEN 'woman'
ELSE 'other' END
hsのcase式っぽい

逆は成り立たない
こっちで慣れていくようにするか

SQLCASE WHEN gender = '1' THEN 'man'
WHEN gender = '2' THEN 'woman'
ELSE 'other' END
hsのguardっぽい

sqlSELECT
CASE
WHEN 条件式1 THEN 式1
WHEN 条件式2 THEN 式2
ELSE 式3
END
FROM テーブル名;
類似
参考
いろいろな応用例など