Посмотрев на комментарии к этому ответу, вот объяснение -
В вашем примере ''
рассматривается как NULL
в Oracle, и, следовательно, '' != 'abcd'
оценивается как UNKNOWN
, что является причиной того, что возвращается результат 'else clause' (а не 'when claus') результат).
Если вы хотите проверить какой-то столбец на NULL
, явно укажите это.
...case when columnName is NULL then ... else ... end
или если вы проверяете, чтобы какое-то значение столбца было 'abcd'
, тогда используйте -
...case when columnName != 'abcd' then ... else ... end