문제
https://school.programmers.co.kr/learn/courses/30/lessons/132201
정답 코드
-- COALESCE() 함수 사용
SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, 'NONE') AS TLNO
FROM patient
WHERE AGE <=12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;
-- CASE 문 사용
SELECT PT_NAME, PT_NO, GEND_CD, AGE,
CASE
WHEN TLNO IS NULL THEN 'NONE'
ELSE TLNO
END AS TLNO
FROM patient
WHERE AGE <=12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;
배운 점
1. COALESCE() 함수
- '합치다' 라는 의미
- 여러 개의 인수를 받아 첫 번째로 NULL이 아닌 인수를 반환
= 따라서 COALESCE(TLNO, 'NONE') 는 NULL 을 'NONE' 을 반환하고, 그 외는 반환 - IS NULL 을 사용 & 조건문 일 때, 간단하게 표현할 수 있는 코드
2. CASE 문
- 문법
CASE
WHEN TLNO IS NULL THEN 'NONE'
ELSE TLNO
END AS TLNO
- IF ~ ELSE 문을 SQL 식으로 직관적으로 표현한 것
- 꼭 IS NULL 이 아니더라도 다양한 상황에서 활용 가능
- WHERE 문이 아니라 SELECT 문에서 사용해야 함을 주의
'Algorithm & SQL > Oracle' 카테고리의 다른 글
[SELECT] 타입이 DATE 일 때 처리 방법 | 정렬 (0) | 2024.01.09 |
---|