오라클 in 쿼리 null 에 대해 질문이 있습니다. 0 4 1,989

by 개논물 [SQL Query] [2014.09.04 14:07:53]


쿼리를 쩌는 데

 

select * from test   where temp in( null,  2,  7 ,8  )

이렇게 했더니  null 값은  결과에 포함이 되지 않쿤요...

그러면 select * from test   where temp in( 2, 7 ,8  ) or temp is null

이렇게 하자나 먼가  길어 보이고  혹시

간단히 줄일수 있는 방법이 있을까요?

선배님들 조언좀 부탁드립 니다.
 

by DJ [2014.09.04 14:13:07]

기본적으로 null 과의 비교 연산은 is null 또는 is not null 입니다.

null = null 은 false 가 되죠. in 또한 = 의 확장이기 때문에 그렇지 않을까요.

 

 


by 마농 [2014.09.04 14:17:25]

억지로 만들어 보자면...
 WHERE NVL(temp, 2) IN (2, 7 ,8)
단, 인덱스는 못타겠죠.


by 우리집아찌 [2014.09.04 14:59:53]

select * from test   where temp in(  2,  7 ,8  )

UNION ALL

select * from test   where temp IS NULL


by 이재현 [2014.09.04 17:55:59]

음 pk 컬럼에 temp 컬럼을 추가한 인덱스을 생성하고 스킵스캔을 태워서 트레이스 확인 해보세요.

널값이 별루 없으면 효과을 발이 할듯하네요

sql 방식은 우리집아찌 님 형식으로 하시면 될듯합니다.

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