메모장

COALESCE 함수 본문

DB/개념정리

COALESCE 함수

Itchild 2024. 4. 10. 22:49
728x90
반응형

COALESCE함수는 인자로 주어진 컬럼들 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수입니다. 만약 A, B라는 컬럼을 인자로 COALSESC 함수로 주게 되면 A 컬럼 값이 NULL 값이 아닌 경우 A 값을 리턴하고 A가 NULL이고 B가 NULL이 아닌 경우 B 값을 리턴합니다. 모든 인수가 NULL이면 NULL을 반환합니다.

 

 

COALESCE 함수를 언제 사용 할까?

COALESCE 영어로 합치다라는 뜻을 가지고 있다.

예를 들어 A테이블에 phone이라는 컬럼과 B테이블에 tel이라는 테이블이 있는데, 사실 컬럼명은 다르지만 의미하는건 같다고 생각해보자. 둘다 전화번호를 뜻한다.

 

그런데 어떤 경우에는 phone이라는 컬럼에 전화번호 데이터가 insert되고

또 다른 경우에는 tel이라는 컬럼에 전화번호 데이터가 insert된다고 한다면

phone을 확인했다가, 없으면 tel을 확인하고 왔다갔다 검색하는게 귀찮기도 하고, 한 번에 정보를 확인할 수 없으니 불편하다.

 

COALESCE 함수는 정확히 첫 번째 인자부터 차례대로 확인하는데, 처음으로 NULL이 아닌 값을 만나면 그 값을 리턴시키는 함수이다. 위와 같은 상황에서 그럴 때에 'COALESCE(phone, tel)'하면

phone 필드에 값이 있을 경우 phone 데이터를 리턴하고 phone의 값이 NULL이면 tel 데이터를 리턴하니 합치는 효과가 있는 것~!

 

 

COALESCE 문법

COALESCE 함수는 처음으로 NULL이 아닌 컬럼 값을 만나면 그 컬럼 값을 리턴한다.

 

컬럼1이 NULL이 아니면 컬럼1을 리턴.

컬럼1이 NULL이고 컬럼2가 NULL이 아니면 컬럼2를 리턴..

컬럼1부터 컬럼 n-1까지 데이터가 NULL이면 컬럼N값을 리턴!

 

오라클에서 배웠던 NVL도 첫 번째 인자가 NULL이면 두 번째 인자 리턴하는 함수가 아닌가? 하실수 있는데 NVL은 인자를 두 개만 받을 수 있는 함수지만 COALESCE는 보다시피 여러개의 인자를 받을 수 있습니다.

즉, 어찌보면 NVL함수를 일반화한 함수가 COALESCE 이다.

 

 

 

예시)

SELECT A, B, COALESCE(A,B) FROM table_a;

A
B
COALESCE(A, B)
1
NULL
1
NULL
2
2
NULL
NULL
NULL

 

A 가 1이고 B가 NULL 이면 1을 반환 하고

A 가 NULL 이고 B 가 2 이면 2 를 반환

A와 B 모두 NULL 이라면 NULL 을 반환

 

 

 

join할때도 종종 사용가능 ,,

 

 
심플 예시
 

A테이블에 a라는 컬럼과 B테이블에 b라는 컬럼이 있는데, A테이블에 insert되는 경우 a에 저장되고 B테이블에 insert되는 경우 b라는 컬럼에 저장된다고 합시다. 그런데 둘다 의미하는바가 사실 같다면

coalesce(A.a, B.b) 를 통해 하나로 합칠 수 있어요.

이렇게 사용 가능하다.

 

 

 

 

 

 

 

 

728x90
반응형

'DB > 개념정리' 카테고리의 다른 글

[myBatis] include refid  (0) 2024.04.10
[ Oracle ] EXTRACT 함수  (0) 2024.04.10
[ DB ] 오라클 프로시저 (PROCEDURE)  (0) 2024.04.10
[ DB ] 이벤트 스케쥴러  (0) 2024.04.10
[DB] 트리거  (0) 2024.04.10