2013-04-30 2 views
2

저장 프로 시저와 몇 가지 부울 변수 (Bit)가 있습니다.
특정 변수가 False 인 경우 WHERE 문을 넣고 싶습니다.조건부/선택적 where 문

은 내가 이런 식으로 뭔가를 할 수 알고 :

IF (@myBoolean = 1) 
BEGIN 
SELECT * FROM myTable 
END 
ELSE 
SELECT * FROM myTable WHERE myTable.Foo = 'Bar' 

WHERE 문이 optionnal 만들 수있는 방법이 있나요? 왜냐하면 나는 너무 많은 불리언 변수가 있기 때문에 각각의 가능성에 대해 다른 쿼리를하고 싶지는 않습니다.
이 내가 (나는 그것이 작동하지 않습니다 알고) 생각하고있는 것입니다 :

SELECT * FROM myTable 
CASE WHEN @myBoolean = 0 
THEN WHERE myTable.Foo = 'Bar' 
ELSE --Do nothing 
+0

잘못 무엇 'SELECT * myTable에 FROM WHERE @myBoolean = 1 (myTable.Foo ='바 '와 @myBoolean = 0)'? –

답변

3
SELECT * FROM myTable 
where (@myboolean = 1 and foo = 'bar') or @myboolean = 0 
+0

이것이 myBool이 거짓이라고 가정 해 봅시다. 쿼리는'SELECT * FROM myTable WHERE @myBoolean = 0'을 할 것이지만 @myBool은 테이블의 일부가 아닙니다. – phadaphunk

+0

시도하고 그것이 무엇을 참조하십시오! –

+1

동시에 실현하고 ... 'SELECT * FRT myTable WHERE TRUE' -_- '감사합니다. – phadaphunk