이 트릭을 사용합니다.
....
WHERE 1 = 1
AND a = a
AND b= @b
AND c = c
... etc....
내가
var comm = @"SELECT * FROM `TABLE` WHERE 1 = 1 ";
if (model.Serial > 0) {
comm += " AND `SERIAL` LIKE '%" + model.Serial + "%' ";
} else {
comm += " AND `SERIAL` = `SERIAL`";
}
if (model.Id.HasValue && model.Id.Value > 0) {
comm += " AND `AND` LIKE '%" + model.Id.Value + "%' ";
} else {
comm += " AND `NUIP` = `NUIP` ";
}
....
WHERE 1 = 1
멀리 최적화되어 검색 할과 WHERE 아직 여부를 정의 된 경우 기억해야 할 필요성을 제거하지 않으면 내가 자기에 열을 비교 즉, 및 모든 검색이 최적화되어 (AND a=a
) 검색이 적용됩니다 (AND a = xxx
).
검색 할 때마다 if
을 하나만 추가하면됩니다.
또한 문자열 처리를 정리하기 위해 StringBuilder를 사용합니다.
비즈니스 규칙에 따라 구현이 결정됩니까? 그것들은 비즈니스 규칙처럼 들리지 않습니다. –