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
이렇게 하자나 먼가 길어 보이고 혹시
간단히 줄일수 있는 방법이 있을까요?
선배님들 조언좀 부탁드립 니다.
기본적으로 null 과의 비교 연산은 is null 또는 is not null 입니다.
null = null 은 false 가 되죠. in 또한 = 의 확장이기 때문에 그렇지 않을까요.
억지로 만들어 보자면... WHERE NVL(temp, 2) IN (2, 7 ,8) 단, 인덱스는 못타겠죠.
select * from test where temp in( 2, 7 ,8 )
UNION ALL
select * from test where temp IS NULL
음 pk 컬럼에 temp 컬럼을 추가한 인덱스을 생성하고 스킵스캔을 태워서 트레이스 확인 해보세요.
널값이 별루 없으면 효과을 발이 할듯하네요
sql 방식은 우리집아찌 님 형식으로 하시면 될듯합니다.