본문 바로가기
Database/SQLite

SQLite의 Coalesce 함수 총정리하기

by Developer88 2025. 1. 24.
반응형

오늘은 SQLite의 Coalesce 함수에 대해 정리해 보겠습니다.

 

1. Coalesce

coalesce의 원래 뜻은 "합쳐지다" 또는 "병합하다"인데요.

데이터베이스 나 SQL에서는,

NULL 값을 다른 의미 있는 값으로 대체하는 데 주로 사용됩니다.

 

SQL문에서는 여러개의 표현식 중,

NULL이 아닌 첫 번째 값을 찾아서 반환합니다.

 

COALESCE(expression1, expression2, ..., expressionN)

 

예를 들어,

아래에서 쿼리는 첫번째 NULL이 아닌,

'Hello'를 반환합니다.

 

SELECT COALESCE(NULL, NULL, 'Hello', 'World');

 

 

2. 예제

예제를 보면서 COALESCE를 좀 더 이해해 볼까요.

먼저 직원 테이블을 아래와 같이 만듭니다.

 

CREATE TABLE 직원 (
   이름 TEXT,
   급여 INTEGER
);

 

여기에 데이터를 삽입하는데요.

아래와 같이 2번째 넣는 데이터에는,

NULL이 있는 데이터를 삽입하였습니다.

 

INSERT INTO 직원 VALUES ('김철수', 3000000);
INSERT INTO 직원 VALUES ('이영희', NULL);

 

당연히 SELECT문으로 급여를 조회하면, NULL값을 보게되는데요.

NULL인 경우, 0으로 대체하려면,

아래와 같이, COALESCE문을 사용하면 됩니다.

 

SELECT 이름, COALESCE(급여, 0) as 급여
FROM 직원;

 

 

3. Join을 사용하는 경우의 예

Join을 사용하여서 테이블을 합쳐셔 조회하는 경우,

특정한 경우에 NULL값이 들어갈 것을 고려해서,

COALESCE를 사용해야하는 경우들이 있습니다.

 

아래와 같이 학생과 성적 테이블이 있습니다.

 

CREATE TABLE 학생 (
   학번 INTEGER,
   이름 TEXT
);

CREATE TABLE 성적 (
   학번 INTEGER,
   과목 TEXT,
   점수 INTEGER
);

 

 

이 테이블에 각각 아래와 같은 데이터를 넣습니다.

 

INSERT INTO 학생 VALUES (11, '김철수');
INSERT INTO 학생 VALUES (12, '이영희');
INSERT INTO 학생 VALUES (13, '박민수');

INSERT INTO 성적 VALUES (11, '수학', 90);
INSERT INTO 성적 VALUES (12, '수학', 85);

 

 

다음과 같은 JOIN으로 쿼리를 조회하는데요.

학번이 같은 경우를 기준으로 해서,

성적테이블에 LEFT JOIN하였습니다.

이렇게 되면 13번 학번의 '박민수'는,

성적이 NULL값을 받게 됩니다.

 

이 때 NULL이 나오면, 0값을 받도록,

COALESCE를 사용하면 됩니다.

 

SELECT 학생.이름, COALESCE(성적.점수, 0) as 수학점수
FROM 학생
LEFT JOIN 성적 ON 학생.학번 = 성적.학번;

 

아무래도 JOIN을 해서 조회하는 경우는,

이러한 경우가 발생할 수 있겠지요.

 

참고로 JOIN에 관해서는 오래된 글이지만,
아래 글을 참조해 주세요.

 

>> Join 에 관해서 정리해 보겠습니다. #SQL

 

Join 에 관해서 정리해 보겠습니다. #SQL

오늘은 관계형 데이터베이스의 핵심인 Join에 대해서 정리해 보도록 하겠습니다. 1. Join중복정보를 제거하기 위해, 정규화가 된 테이블들이 있을 때,조각나있는 여러 테이블의 정보를 한번에 합

developer88.tistory.com

 

728x90

댓글