2013-05-28 2 views
2

SQL Server 쿼리 select를 만들려고합니다. NULL이 될 수도 있고 그렇지 않을 수도있는 하나의 인수가 있습니다. 언제 @value가 null입니다. null 값을 가진 모든 mycolumn을 반환하고 싶습니다. value가 null이 아닌 경우 해당 값으로 mycolumn을 반환하고 싶습니다.SQL 서버는 where 절에 null 값이 있거나없는 행을 반환합니다.

가장 이것을 처리하는 방법, 내가 시도 :

SELECT name FROM mytable 
WHERE coalesce(@value,mycolumn)=mycolumn 

가 나는 그것이 null 값의 처리에있다 느낌이 있어요. 어떻게 해결할 수 있습니까?

답변

2
where myColumn = @value or 
     (myColumn is null and @value is null) 
-1

시도 :

SELECT name FROM mytable where myColumn = @value or @value is null 
2
SELECT T.name 
FROM dbo.mytable T 
WHERE 
    EXISTS (
     SELECT @value INTERSECT SELECT T.mycolumn 
    ) 
; 
+0

이것은 훌륭합니다! 그 말을하기 위해 돌아 오는 것을 도울 수는 없었습니다. –

+0

고마워요, 애리조나! 실행 계획을 확인하십시오. 이것은 많은 경우에 완벽하게 작동 할 수 있지만, 복잡한 쿼리 나 여러 열에서 작업을 시작할 때는주의해야합니다. 작동 할 수는 있지만 실행 계획이 좋지 않은 경우를 보았으므로 확인해야합니다. – ErikE

+0

조심해야 겠어, 고마워! –

0

1 케이스. u는 도시 이름을 전달 ..

DECLARE @SearchType varchar(80); SET @SearchType = 'Alamo'; Select * From Homes where City = @SearchType OR Coalesce(@SearchType,'') = ''

2 케이스. 도시가 공백이거나 비어 있습니다.

SET @SearchType = ''; 

첫 번째 경우 결과가 도시 이름으로 표시됩니다. 2 번째 경우에는 모든 결과를 얻을 수 있습니다.

관련 문제