본문 바로가기
IT/PostgreSQL

[PostgreSQL] - NULLIF 함수를 사용하여 Null 및 공백('') 처리하는 방법(with Oracle, MySQL, MSSQL)

by 차이나는 개발자 2023. 1. 15.
728x90
반응형

#Null 및 공백 처리하는 방법(with Oracle, MySQL, MSSQL)

-Oracle 같은 경우에는 NULL값과 공백('')이 똑같이 NULL값으로 인정되지만 PostgreSQL, MySQL, MSSQL은 NULL과 공백('')이 구분되기 때문에 체크나 처리하는 부분에서 따로 신경 써줘야 합니다.

-Oracle 같은 경우에는 조건식에서 IS NULL 하나로 NULL값과 공백('') 값을 다 처리할 수 있지만 Oracle 이외의 경우 아래와 같이 NULLIF 함수를 사용해서 공백('') 일 경우에도 NULL값을 반환하게 하여 NULL값과 공백('')을 둘 다 처리하게 할 수 있습니다.

 

-조건식 등에서 공백('')과 NULL값을 동시에 체크할 때 사용하는 쿼리입니다.

NULLIF(TRIM('컬럼'),'') IS NULL

 

 

#NULLIF('인수1', '인수2') 함수

-NULLIF() 함수는 인수1과 인수2의 값이 같으면 NULL값을 반환하고 다르면 첫 번째 인수1을 반환하는 함수입니다.

-아래의 표현식과 같은 의미입니다.

CASE WHEN e1=e2 THEN NULL ELSE e1 END

 

 

#Oracle NULLIF() 함수 사용 예제

-2번째 쿼리를 보시면 Oracle에서는 공백('') 도 NULL값을 반환하는 것을 확인하실 수 있습니다.

-- NULL
select NULLIF('', '') FROM dual;
-- NULL
select NULLIF('', NULL) FROM dual;
-- hello
select NULLIF('hello', '') FROM dual;

 

 

#PostgreSQL, MySQL, MSSQL NULLIF() 함수 사용 예제

-2번째 쿼리를 보면 Oracle과 다르게 NULL을 반환하는 게 아닌 공백('')은 공백('')으로 반환하는 것을 확인하실 수 있습니다.

-- NULL
select NULLIF('', '');
-- ''
select NULLIF('', NULL);
-- hello
select NULLIF('hello', '');

 

 

 

728x90
반응형

댓글