DataBase/SQL

[SQL] 쿼리 결과가 없는 경우 0으로 반환하려면?

mingmongs 2025. 3. 14. 17:59

title

쿼리 조건에 맞는 결과가 없는 경우에도, 값을 리턴받고 싶은 경우가 있다.
이 때는 MAX 함수를 사용하여 0으로 리턴받도록 할 수 있다.

 

1) COALESCE 함수로만 NULL 처리한 경우

WITH DATA_TABLE AS (
SELECT '1' AS A FROM DUAL
UNION ALL
SELECT '2' AS A FROM DUAL
)
SELECT COALESCE(A, '0') AS RESULT
FROM DATA_TABLE
WHERE A = '3';

 

결과값

result1

위 예시 쿼리에 대한 결과가 없기 때문에, 이 결과값을 리턴받게 되는 경우 NULL이 될 것이다.

 

2) MAX 함수로 감싸서 NULL 처리한 경우

WITH DATA_TABLE AS (
    SELECT '1' AS A FROM DUAL
    UNION ALL
    SELECT '2' AS A FROM DUAL
)
SELECT COALESCE(MAX(A), '0') AS RESULT
FROM DATA_TABLE
WHERE A = '3';

 

결과값

위의 예시는 MAX() 함수로 결과값을 감싼 뒤 COALESCE() 함수에 한 번 더 감싼 것이다.

기존에 조건에 해당하는 결과값 A가 없는 경우 COALESCE 함수가 적용되지 않았는데,

MAX 함수로 감싼 결과 COALESCE 함수에 의해 "0" 이라는 값을 리턴할 수 있게 되었다.