[SQL] 여러가지 NULL 관련 함수

데이터베이스에서 기본적으로 제공해주는 NULL 관련 함수들이다.
Hi's avatar
Aug 05, 2024
[SQL] 여러가지 NULL 관련 함수

💡
데이터베이스에서 기본적으로 제공해주는 NULL 관련 함수들이다.
 

✅ 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

soultree