데이터베이스에서 기본적으로 제공해주는 NULL 관련 함수들이다.
✅ 1. NVL(속성, 대체할 값)✅ 2. NULLIF(속성, 대체할 값)✅ 3. COALESCE(속성1, 속성2, 속성3, …)✅ 4. NVL2(속성, 대체값1, 대체값2)✅ 5. CASE방법1.방법2.
✅ 1. NVL(속성, 대체할 값)
속성의 값이 NULL일 경우 대체할 값을 반환하고, NULL이 아닐 경우 속성의 값을 반환하는 함수이다.
NVL(col1, 0) -> col1이 null이면 0 반환, null이 아니면 col1 그대로 반환
✅ 2. NULLIF(속성, 대체할 값)
속성의 값과 대체할 값이 같으면 NULL을 반환하고, 다르면 속성의 값을 반환하는 함수이다.
NULLIF(col1, 0) -> col1이 0이라면 NULL 반환, 0이 아니라면 col1 그대로 반환
✅ 3. COALESCE(속성1, 속성2, 속성3, …)
여러 속성 중 NULL이 아닌 최초의 속성값을 반환하는 함수이다.
만약, 특정 회원의 연락처를 가져오고 싶은데, phone, email, sns 등의 속성이 있고 각 회원은 셋 중 한 개 이상에 연락처를 등록했다고 가정하자.
그럴 때 셋 중 하나의 연락처를 가져오고 싶다면 아래와 같이 작성할 수 있다.
select COALESCE(phone, email, sns) as contact from user;
✅ 4. NVL2(속성, 대체값1, 대체값2)
속성의 값이 NULL이 아닌 경우대체값1
을 반환하고, NULL인 경우대체값2
를 반환하는 함수이다.
만약, 특정 회원의 나이 정보(age)가 존재하는지 확인하고 싶다면?
select NVL2(age, '나이정보존재', '나이정보없음') as 존재여부 from user
✅ 5. CASE
CASE는 다른 프로그래밍 언어의if else
구문과 유사하다.
방법1.
CASE WHEN grade = 1 THEN 'A' WHEN grade = 2 THEN 'B' WHEN grade = 3 THEN 'C' [ELSE 'D'] // ELSE는 생략이 가능하다. 생략하면 default 값으로 NULL값이 들어간다. END
방법2.
CASE grade WHEN 1 THEN 'A' WHEN 2 THEN 'B' WHEN 3 THEN 'C' [ELSE 'D'] // ELSE는 생략이 가능하다. 생략하면 default 값으로 NULL값이 들어간다. END
이렇게 단순히 ‘같은지를’ 비교하는 구문은
DECODE
함수로 대체할 수 있다.DECODE(grade, 1, 'A', 2, 'B', 3, 'C', 'D') // 'D'는 생략 가능
Share article