같은 의미일까요? 0 2 2,237

by 하수 SQL문의 [2009.08.17 17:42:44]


                 



AND trim(nvl(c.update_dt, 'N')) = 'Y'

------------------------------------------------

AND C.UPDATE_DT=DECODE(TRIM(C.UPDATE_DT),NULL,'N','Y')

이2가지 문장이 조건절에 쓰였을때 같은 의미일까요?

갑자기 궁금...

by 마농 [2009.08.17 17:55:13]
첫번째는 update_dt = 'Y' 를 찾는 건이죠.
'Y ', ' Y', ' Y '을 포함하여 앞뒤공백두개이상도 조회되구요.
두번째는 공백이 없는 순수 'Y'만 찾는 것이죠.
다만 두 쿼리의 차이점을 분석하기 보다는 원하는 결과를 얻어내기 위한 최적의 쿼리가 무었인지를 고민하는게 좋을 것 같습니다.
만약 데이터에 공백이 포함될리가 없다면
update_dt = 'Y'
이것이 최적입니다. 쓸모없는 부분은 과감하게 버리시는게 좋습니다.

by 러드 [2009.08.17 18:13:32]
이럴때는 TRIM(NVL2( C.UPDATE_DT, 'Y', 'N')) 이렇게 사용해도!!!

NVL2 -> 9I부터인가??/
암튼 NULL 아니면 Y NULL이면 N 일꺼에요^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입