망각에 재주 있는 나를 위해 기록하는 곳.

[SQL] COALESCE, NULLIF (NVL, NVL2) 본문

DB

[SQL] COALESCE, NULLIF (NVL, NVL2)

baobabtree 2024. 3. 28. 05:42

COALESCE

COALESCE 함수는 여러 개의 인자를 받아서, 그 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수이다.

인자로 받은 값들을 왼쪽에서 오른쪽으로 순차적으로 검사하며, NULL이 아닌 첫 번째 값을 찾아서 반환한다.

ANSI 표준 함수라서 대부분의 SQL에서 사용 가능하다.

 

 

예시를 보면 이해가 간다.

SELECT COALESCE(NULL, 5, 10, 15);

=> 결과: 5

 

SELECT COALESCE(NULL, NULL, 10, 15);

=> 결과: 10

 

SELECT COALESCE(NULL, NULL, NULL, NULL);

=> 결과: NULL

 

 

test이름의 테이블이 있고

  a b c
1 1 2 3
2 4 5 NULL
3 NULL NULL NULL
4 6 NULL NULL
5 NULL 7 NULL
6 NULL 8 9
7 NULL NULL 10

 

COALESCE 함수로 쿼리를 하면

SELECT *, COALESCE(a,b,c) AS result
FROM test;

 

 

아래와 같은 결과를 얻을 수 있다.

  a b c result
1 1 2 3 1
2 4 5 NULL 4
3 NULL NULL NULL NULL
4 6 NULL NULL 6
5 NULL 7 NULL 7
6 NULL 8 9 8
7 NULL NULL 10 10

 

 

NULLIF

NULLIF(A, B)

=> A와 B가 같으면 NULL 반환, 다르면 A값 반환.

 

 

 

NVL, NVL2

NVL과 NVL2는 Oracle에서만 사용되는 함수인데, 이것도 NULL 값 처리에 사용된다.

( *COALESCE 함수는 표준 함수)

 

 

NVL

NVL(대상값, 대체값)

=> 대상값이 NULL 인지 아닌지 검사 후

NULL 아니면 대상값 출력.

NULL이면 대체값 출력.

 

 

NVL2

NVL2(조건, NULL아닐때, NULL일때)

=> 조건이 NULL인지 아닌지 검사 후,

NULL아닐때, NULL일때 값을 조건에 맞게 출력.

 

'DB' 카테고리의 다른 글

postgres 스키마 디폴트 변경  (0) 2024.07.09
[PostgreSQL] CAST  (1) 2024.03.28
[SQL] 데이터베이스 객체 삭제 (DROP)  (0) 2024.03.28
[SQL] 데이터베이스 구조 변경 (ALTER)  (1) 2024.03.28
[SQL] 데이터 삭제 (DELETE)  (0) 2024.03.28