CASE는 2가지 문법(switch문, if문)이 가능하다.
CASE문은 위에서 아래로 순차적으로 적용되므로 순서를 유의하여 쿼리 작성 해야한다.
value와 compare_value 값이 같으면 THEN절을 반환한다.
만약 서로 같지 않으면 ELSE절을 반환한다.
이때 ELSE절이 없으면, NULL을 반환한다.
CASE value
WHEN compare_value THEN '반환값'
WHEN compare_value THEN '반환값'
ELSE 'WHEN 조건에 해당 안되는 경우 반환값'
END
SELECT nickname,
(
CASE nickname
WHEN 'a' THEN 'a가 맞다'
WHEN 'b' THEN 'b가 맞다'
ELSE '포함되지 않는다'
END
) AS test
FROM sam
;
WHEN 뒤의 condition의 논리값이 참이면 THEN절의 result값을 반환한다.
만약 논리값이 거짓이면 ELSE절의 result값을 반환한다.
이때 ELSE절이 없으면 NULL을 반환한다.
CASE
WHEN [condition] THEN result
WHEN [condition] THEN result
ELSE result
END
SELECT id,
(
CASE
WHEN nickname = 'a' THEN '천룡인'
WHEN nickname = 'c' THEN '해군'
WHEN nickname = 'd' THEN '해적'
ELSE '일반인'
END
) AS type,
age
FORM sam;
SELECT id, nickname, age,
IF (age >= 20, 'old' , 'young') AS type
FROM sam;
SELECT id,
IF (nickname is null, 'no name', nickname)
FROM sam;
SELECT IFNULL(nickname, '없어')
FROM sam;