SQLのCASE式
条件分岐ができる
式なので、全体で一つの値を返す
だからSELECT句、WHERE句、HAVING句などどこにでも書ける
(WHERE句ではなく)SELECT句で条件分岐したSQLを書けるようになる
WHENがダメという話ではなく、WHENでの条件分岐がダメ
ダメではないがmrsekut.icon
CASEなしでは複数のSQLで実現していたことが、1つの式で書けたりする
パフォーマンスに有利
全てのWHEN句の返り値の型は同じである必要がある
ENDを忘れないように注意
ELSE句は書くように気をつける
ELSEはないとELSE NULLとして扱われるので型の狂いによりバグる可能性がある
2種類ある
逆は成り立たない
code:SQL
CASE gender
WHEN '1' THEN 'man'
WHEN '2' THEN 'woman'
ELSE 'other' END
hsのcase式っぽいmrsekut.icon
逆は成り立たない
こっちで慣れていくようにするかmrsekut.icon
code:SQL
CASE WHEN gender = '1' THEN 'man'
WHEN gender = '2' THEN 'woman'
ELSE 'other' END
hsのguardっぽいmrsekut.icon
code:sql
SELECT
CASE
WHEN 条件式1 THEN 式1
WHEN 条件式2 THEN 式2
ELSE 式3
END
FROM テーブル名;
類似
参考
いろいろな応用例など