2013-10-21 2 views
0

더 간단하게 작성할 수있는 방법이 있습니까?WHERE 절의 조건이 서로 다름

WHERE 
    (
     (@IdAgent IS NULL AND IdAgent IS NULL) 
     OR 
     (@IdAgent IS NOT NULL AND IdAgent = @IdAgent) 
    ) 
=NULL 및 비 NULL 값과 일치하지 않습니다 때문에 당신은 하찮게, 하나 개의 테스트를 제거 할 수 있습니다

답변

1

:

WHERE 
(@IdAgent IS NULL AND IdAgent IS NULL) 
OR 
    IdAgent = @IdAgent 
+0

흥미 롭습니다. 감사합니다. –

0

당신은, this answer에서 방법을 사용하여 시도 할 수는에 적용 할 때 상황은 다음과 같이 보일 것입니다 :

WHERE EXISTS (SELECT IdAgent 
       INTERSECT 
       SELECT @IdAgent) 

아마도 특정 환경에서의 성능을 위해 테스트해야 할 것입니다. 현재 솔루션보다 훨씬 느리게 실행되지 않는지 확인하십시오.

+0

좋은 해결책! –