[MySQL] 널(Null)일 경우, 교체하는 2가지 방법 (COALESCE, IFNULL)

    MySQL 혹은 MariaDB에서 널(NULL) 값을 다른 값으로 교체를 하고 싶을 경우, 대표적으로 2가지의 방법을 활용하는데요. 2가지의 방법을 모두 활용해보고, 어떤 차이가 있는지 알아보도록 하겠습니다.

     

    [MySQL] 널(Null)일 경우, 교체하는 2가지 방법 (COALESCE, IFNULL)


    IFNULL 함수

    우선 NULL값을 가장 심플하게 처리하는 방법으로는 IFNULL이 있습니다. IFNULL은 2개의 인자를 받아서 첫번째 인자가 NULL값인 경우 두번째 인자로 대체하는 함수입니다. 간단히 생각해서 IFNULL(값, 대체값) 형식으로 사용되며, 여기서 값이 NULL일 경우 대체값으로 처리 되는 방식입니다.

     

    사용 방식

    SELECT IFNULL(column_name, '교체할값') From table_name;

     

     

    예시

    SELECT IFNULL(sales, 0) from sales_table;

     

    sales_table의 sales 컬럼이 널일 경우, 0으로 대체합니다.

     

    SELECT name, IFNULL(email, 'No Email') FROM contacts;

     

    contacts 테이블에서 name과 email을 출력하지만, email의 값이 null일 경우, No Email 이라는 문자열이 출력됩니다.

     

    위 예시처럼, IFNULL은 말 그대로 NULL에 특화된 함수로 해당 값을 처리할 때 매우 유용합니다.

     

    COALESCE 함수

    IFNULL과 함께 COALESCE 함수 역시, NULL값을 처리하기 위해서 사용되는 함수입니다. IFNULL이 단 2개의 인자값으로 처리하는 것과 달리 이 함수는 여러개의 인자값을 받으면서, Null이 아닌 값을 리턴합니다. 

     

    사용방식

    SELECT COALESCE(column1, column2, '기본값') FROM table_name;

     

    우선 방식은 위와 같이 값을 나열하면 됩니다. 위 사용방식 예시를 보면, 마지막에 '기본값'이라는 문자열이 있기 때문에 결과적으로 최종적으로는 Null 값이 리턴되지는 않습니다.

     

    첫번째로 column1 값을 검사하여, Null값일 경우 column2 값을 검사하며 마찬가지로 Null값일 경우 마지막 '기본값'을 출력하게 됩니다.

     

    사용예시

    SELECT COALESCE(end_date, start_date, CURRENT_DATE) from recommend;

     

    recommend라는 테이블에서 end_date 컬럼을 검사하고 null이면, start_date를 검사한 후 마찬가지로 null이면 CURRENT_DATE를 리턴합니다.

     

    SELECT COALESCE(salary, 0) FROM salary_table;

     

    salary_table에서 salary 컬럼을 검사하여 Null이면, 0을 리턴합니다.

     


     

    위와 같이 IFNULL과 COALSCE는 유사하지만, 엄밀히 보자면 전혀 다른 로직을 가진 메소드입니다만 COALSCE가 IFNULL 메소드의 역할을 정확히 대체할 수 있기 때문에 더 다양한 기능을 가진 메소드라 할 수 있습니다.

     

    반응형

    댓글

    Designed by JB FACTORY