generated at
SQLのCASE式
条件分岐ができる
式なので、全体で一つの値を返す
だから SELECT 句、 WHERE 句、 HAVING 句などどこにでも書ける
( WHERE 句ではなく) SELECT 句で条件分岐したSQLを書けるようになる
WHEN がダメという話ではなく、 WHEN での条件分岐がダメ
ダメではないがmrsekut
CASEなしでは複数のSQLで実現していたことが、1つの式で書けたりする
パフォーマンスに有利
CHECK制約を柔軟に掛けられる

WHEN 句は短絡評価される
全ての WHEN 句の返り値の型は同じである必要がある
END を忘れないように注意
ELSE 句は書くように気をつける
ELSE はないと ELSE NULL として扱われるので型の狂いによりバグる可能性がある


2種類ある
見た目がシンプルだが、検索CASE式に比べて出来ることが少ない
単純CASE式で書けることは全て検索CASE式でも書ける
逆は成り立たない
SQL
CASE gender WHEN '1' THEN 'man' WHEN '2' THEN 'woman' ELSE 'other' END
hsのcase式っぽいmrsekut
単純CASE式で書けることは全て検索CASE式でも書ける
逆は成り立たない
こっちで慣れていくようにするかmrsekut
SQL
CASE WHEN gender = '1' THEN 'man' WHEN gender = '2' THEN 'woman' ELSE 'other' END
hsのguardっぽいmrsekut


SQLのSELECT句に描く時
sql
SELECT CASE WHEN 条件式1 THEN 式1 WHEN 条件式2 THEN 式2 ELSE 式3 END FROM テーブル名;



類似



参考
いろいろな応用例など