오라클에서 보면 종종 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,' ') = ' ' 와 같이 '' -> ' ' 로 변경해주는 작업을 해주어 강제로 빈값을 만들어주는 작업이 필요할 것이다.
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] 오라클 줄바꿈, 개행처리 / CHR(10)과 CHR(13) (0) | 2021.06.15 |
---|---|
오라클 테이블 생성 ( NOT NULL ENABLE / NOT NULL DISABLE ) (0) | 2021.04.14 |
[JDBC] 오라클 접속 설정(sid와 Service Name) (0) | 2021.03.26 |