우리는 몇 PARAMS을 가지고 여기에 큰 틱 쿼리를 가지고 있고, 각각에 대해, 쿼리는 너무처럼 where
절의 한 부분에 의해 다릅니다TSQL에서 동적 조건부 검색을 수행하는 더 나은 방법은 무엇입니까?
CASE WHEN @IncludeNames = 1 AND @NameFilter IS NULL THEN
(SELECT blah FROM blahBlah
INNER JOIN ...
INNER JOIN ...
INNER JOIN ...
WHERE blahBlah.Id = x.Id)
WHEN @IncludeNames = 1 AND @NameFilter IS NOT NULL THEN
(SELECT blah FROM blahBlah
INNER JOIN ...
INNER JOIN ...
INNER JOIN ...
WHERE blahBlah.Id = x.Id
AND table2.Id = @NameFilter
여러 인스턴스의 경우 where 절의 조건 중 하나만 다른 경우가 있습니다.
큰 선택의 중간에 있다는 것을 명심하십시오. 다음과 같이
하나 개의 큰 연결된 SQL 문자열에 모두 배치하고 그 위에 exec
실행 또는 블록 당 다수의 저장 발동 같은 터무니없는 무언가를 사용하지 않고,이 청소하는 좋은 방법이 있나요 : http://www.developerfusion.com/article/7305/dynamic-search-conditions-in-tsql/7/
서버는 SQL Server 2008 R2입니다. 티아!
'@IncludeNames = 0'을 확인하지 않습니까? 그렇다면 어떻게 될까요? –
http://www.sommarskog.se/dyn-search-2008.html –
한 번에 두 개 이상의 필터를 적용 할 수 있습니까? 이름과 신발 사이즈로? – HABO