Простой CASE
CASE <test-expr> WHEN <expr> THEN <result> [WHEN <expr> THEN <result> ...] [ELSE <defaultresult>] END
При использовании этого варианта test-expr сравнивается с первым expr,затем вторым expr и так далее,до тех пор, пока не будет найдено совпадение, и тогда возвращается соответствующий результат.Если совпадений не найдено, то возвращается defaultresult из ветви ELSE
.Если нет совпадений, и ветвь ELSE
отсутствует, то возвращается значение NULL
.
Совпадение эквивалентно оператору “=
”, то естьесли test-expr имеет значение NULL
, то он не соответствует ни одному из expr, даже тем, которые имеют значение NULL
.
Результаты необязательно должны быть литеральными значениями, они также могут быть именами полей, переменными, сложными выражениями или NULL
.
CASE
SELECT
NAME,
AGE,
CASE UPPER(SEX)
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
ELSE 'Unknown'
END AS SEXNAME,
RELIGION
FROM PEOPLE
Сокращённый вид простого оператора CASE
используется в функции DECODE.