DBMS/Oracle

[Oracle] NULL 일 경우 공백으로 처리되는 문제 해결

우엥우아앙 2021. 1. 8. 17:45

오라클에서 보면 종종  NVL(컬럼값,'') 이와 같이 처리된 부분을 볼 수 있을 것이다.

 

여기서 컬럼값에 NULL 이 들어가면 ''으로 변환한다는 의미인데, 어짜피 oracle은 ''을 NULL로 인식되어 NVL(컬럼값,'') 와 같은 처리는 의미 없어지게 됩니다.

 

특히 NVL(컬럼값,'') = '' 와 같이 처리를 해서 case when 절을 사용한다면 정상적으로 처리되지 않을 가능성이 높다.

 

예를 들면

CASE WHEN NVL(A.PASSWD_EDIT_D,'') = '' THEN TO_CHAR(A.REG_DATE + 90, 'YYYYMMDD') ELSE TO_CHAR(A.PASSWD_EDIT_D + 90, 'YYYYMMDD') END passwordEditDate

NULL 이 되었을 때 TO_CHAR(A.REG_DATE + 90, 'YYYYMMDD') 를 수행해야하나, 실제로는 TO_CHAR(A.PASSWD_EDIT_D + 90, 'YYYYMMDD') 를 처리한다.

 

 

그러므로 위의 예시의 경우에는 NVL(A.PASSWD_EDIT_D,' ') = ' ' 와 같이 '' -> ' ' 로 변경해주는 작업을 해주어 강제로 빈값을 만들어주는 작업이 필요할 것이다.