nvl() 질문 드립니다~ 0 2 2,558

by 바가지 [Oracle 기초] oracle nvl [2021.08.31 17:00:51]


새로 프로젝트에 투입이 되어 기존 sql을 분석하고 있는데

sql 조건 중에 아래와 같이

 >>  AND NVL(SALE_YN, ' ') = 'O'

SALE_YN 값이 NULL 일때 ' ' 공백으로 변환해서 비교하는 조건이 있더라구요.

 >>  AND NVL(SALE_YN, 'O') = 'O'

위와 같은 조건이면 NULL인것도 포함시킬려는걸로 이해를 하겠는데,

SALE_YN 값이 'O' 인것만 가져오는거면 NULL인것은 어차피 제외니까 아래와 같이 변경해서

 >>  AND SALE_YN = 'O'

SALE_YN 값이 O 인것만 가져오면 될거 같은데 저렇게 하는 이유가 뭔지 이해가 안되서 글을 올립니다.

혹시 제가 생각 못하는 이유가 있는것인지 궁금해요~

by 마농 [2021.08.31 18:28:57]

잘 생각 하셨습니다. 정확한 지적입니다.
NVL 이 불필요하게 사용된 쿼리입니다.
이처럼 NVL 이나 아우터 조인, 기타 등등이 불필요하게 사용되는 비효율적인 쿼리들 많이 있습니다.


by 바가지 [2021.08.31 19:04:19]

마농님 감사합니다!

계속 이유가 뭐지 하고 답답해 하고 있었는데 이제야 속이 후련하네요 ㅎㅎ

앞으로도 더욱더 고민하면서 성장해나가도록 하겠습니다~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입