부울을 기반으로 두 조건 또는 적어도 둘 중 하나를 만족하는 행을 선택하는 쿼리를 작성하려고합니다.SQL 쿼리 정리 및/또는 조건에 따라
다음은 작업을 완료하는 간단한 쿼리입니다. 즉, 쿼리의 where 절이 훨씬 더 복잡하므로 더 쉽게 읽을 수있는 방식으로 다시 작성할 수있는 방법을 찾고 있습니다.
이것이 가능합니까?
는declare @AndParam bit
set @AndParam = 1
SELECT * FROM Table
Where
(@AndParam = 1
AND
(Table.CategoryID = 3
AND
Table.Age < 30))
OR
(@AndParam = 0
AND
(Table.CategoryID = 3
OR
Table.Age < 30))
편집 :
이 질문은 정말 가독성과 심미성에 관한 것입니다.
Table.Age < 30
대신 하위 쿼리를 포함한 5 개의 추가 검사가 있습니다. 실질적으로 이것은 하나의 차이만으로 코드의 큰 부분을 복제했다는 것을 의미합니다. 및/또는.
SQL을 읽기가 어려울 때를보기 위해 나는 그것을 고치려고합니다.
제 생각에, 이것은 최소한의 조항 집합이며 더 이상 줄일 수 없습니다. '@ AndParam'이 boolean이면'@ AndParam'과'NOT @ AndParam'을 쓸 수 있습니다. 그러나 그것은 단지 구문적인 설탕입니다. – nif