본문 바로가기

IT

Microsoft SQL Server ISNULL or COALESCE 함수의 차이

반응형

Microsoft SQL Server (이하 sql server) 에서는 null 을 방지할 수 있는 함수 2가지를 사용할 수 있습니다.

ISNULL 과 COALESCE 가 그것입니다.

 

 

ISNULL

이 함수는 sql server 에서 제공되는 함수입니다.

ISNULL(표현식, 대체값)

표현식의 값이 null 인 경우, 대체값을 결과를 대체하여 반환합니다.

 

예시는 아래와 같습니다.

SELECT USER_ID, ISNULL(USER_NAME, 'Unknown') as USER_NAME
FROM MST_USER;

USER_NAME 이 non-null 이라면 USER_NAME 이 반환되고, USER_NAME 이 null 이라면 'Unknown' 이 반환됩니다.

 

 

COALESCE

이 함수는 standard sql function 으로 많은 database 시스템에서 제공됩니다.

COALESCE(표현식1, 표현식2, ..., 표현식N)

첫번째 표현식의 값이 non-null 인 경우 그 값을 반환하고, null 인 경우는 두번째 표현식의 값을 평가합니다.

두번째 표현식의 값이 non-null 인 경우 그 값을 반환하고, null 인 경우는 세번째 표현식의 값을 평가합니다.

반복적으로 표현식N-1 까지 null 인 경우, 표현식N의 값을 반환합니다. (null 이든 아니든)

표현식 중 non-null 값이 발생하면 이후 표현식은 연산하지 않습니다.

 

예시는 아래와 같습니다.

SELECT USER_ID, COALESCE(USER_NAME, USER_LAST_NAME, 'Unknown') AS USER_NAME
FROM MST_USER;

USER_NAME 이 non-null 이라면 USER_NAME 이 반환되고, USER_NAME 이 null 이라면 USER_LAST_NAME 을 평가합니다.

USER_LAST_NAME 이 non-null 이라면 USER_LAST_NAME 이 반환되고, null 이라면 'Unknown' 을 반환합니다.

 

 

정리

  • ISNULL 은 표현식 1개와 대체값 1개, 2개의 매걔변수만 처리할 수 있습니다. 반면 COALESCE 는 여러 표현식을 처리할 수 있으며 첫번째로 non-null 인 값을 반환합니다.
  • ISNULL 은 sql server 에만 사용 가능하며, COALESCE 는 여러 database 에서 사용 가능한 표준 함수입니다.
  • ISNULL 은 특정 표현식이 null 인 경우를 대체값으로 대체하는 경우 적합하고, COALESCE 는 여러 표현식을 평가하고 null 이 아닌 첫 번째 값을 반환하는데 적합합니다.
반응형