CASEでORが正しく評価されない場合、記述の仕方が誤っている可能性があります。
以下のようなデータがあるとします。
flgは3種類あり、0と1⇒A、2⇒Bとして出力するとします。
| id | flg |
| 1 | 1 |
| 2 | 1 |
| 3 | 0 |
| 4 | 2 |
|
1 2 3 4 5 6 7 8 |
SELECT flg ,CASE WHEN flg = 0 or 1 THEN 'A' WHEN flg = 2 THEN 'C' ELSE NULL END FROM hoge |
実行結果を見ると、すべてAになってしまっています。
正しくは以下のように、ORの後にも「flg = 1」とカラム名も記述します。
|
1 2 3 4 5 6 7 8 |
SELECT flg ,CASE WHEN flg = 0 or flg = 1 THEN 'A' WHEN flg = 2 THEN 'C' ELSE NULL END FROM hoge |
そうすると以下のように、正しく評価されます。
コメント