[sql] 조건 함수 (IF, CASE, COALESCE 등)

SQL에서는 데이터를 추출할 때 조건에 따라 다른 값을 반환하거나 빈 값을 처리해야 하는 경우가 많습니다. 이를 위해 조건 함수를 사용하여 데이터를 다양한 방식으로 처리할 수 있습니다. 주로 사용되는 조건 함수로는 IF, CASE, COALESCE 등이 있습니다.

IF 함수

IF 함수는 조건식에 따라 두 가지 값 중 하나를 반환합니다. 예를 들어, 나이가 18세 이상인 경우 “성인”을 반환하고 미만인 경우 “미성년자”를 반환하고 싶을 때 아래와 같이 사용합니다.

SELECT name, 
       IF(age >= 18, '성인', '미성년자') AS adult_status 
  FROM users;

이렇게 하면 age가 18세 이상이면 “성인”, 미만이면 “미성년자”가 출력됩니다.

CASE 함수

CASE 함수는 여러 조건에 따라 다른 값을 반환합니다. 조건에 맞는 경우 해당 값을 반환하고, 그렇지 않을 경우 ELSE 절에 지정된 기본 값이 반환됩니다. 예를 들어, 부서별로 수당을 다르게 지정하고 싶을 때 아래와 같이 사용합니다.

SELECT name,
       CASE department
           WHEN 'IT' THEN salary * 1.2
           WHEN 'HR' THEN salary * 1.1
           ELSE salary
       END AS adjusted_salary
  FROM employees;

위 예제에서는 IT 부서는 연봉의 20%를 추가로 받고, HR 부서는 연봉의 10%를 추가로 받습니다.

COALESCE 함수

COALESCE 함수는 여러 값 중에서 첫 번째로 NULL이 아닌 값을 반환합니다. 이를 통해 NULL 값을 다른 값으로 대체할 수 있습니다. 예를 들어, 연락처가 등록되지 않은 사용자의 경우 디폴트 연락처를 출력하고 싶을 때 아래와 같이 사용합니다.

SELECT name,
       COALESCE(contact_number, '010-0000-0000') AS phone_number
  FROM users;

이렇게 하면 contact_number 값이 NULL인 경우 디폴트 값인 ‘010-0000-0000’이 출력됩니다.

조건 함수를 사용하면 데이터 처리를 유연하게 할 수 있으며, 복잡한 비즈니스 규칙에 따라 데이터를 적절히 가공할 수 있습니다.

참고 자료