复杂的SQL WHERE子句问题

Enc*_*ion 2 sql sql-server

我有一个软件应用程序,如果在输入参数特定字符串中找到,我需要根据特定条件查询数据库.但是,如果找不到特定的字符串,那么我不想包含限制条件.

不太清楚如何处理这个但我已经有了一些代码.我似乎无法完成它.我的where子句如下所示:

WHERE p.country = @country AND 
p.[state] = @state AND 
p.last_update BETWEEN @from AND @to AND
f.facility_id = @facid AND 
p.sex = @gender AND
p.disease1 = CASE WHEN @inpDisease LIKE '%AIDS%' THEN 1 ELSE --?? Here is where it gets tricky
Run Code Online (Sandbox Code Playgroud)

如果在@inpDisease字符串中找不到AIDS,则我不需要使用p.disease1条件限制查询.Disease1是数据类型位,因此该列中只存在1或0.我如何在ELSE中指定0和1,或者让它一起忽略Disease1?我还有15个BIT字段,如果它们存在于inpDisease中则需要检查,否则如果它们不存在则被忽略.

任何想法,最好的方法是什么?我不想最终使用条件逻辑大量的SELECT来省略此处的1个字段或查询中的1个字段.

我似乎无法想出一个好主意来解决这个问题,所以任何帮助都表示赞赏!谢谢

Eri*_*ric 6

如果您不想使用该标准,请将列与其自身值进行比较:

p.disease1 = CASE WHEN @inpDisease LIKE '%AIDS%' THEN 1 ELSE p.disease1 END
Run Code Online (Sandbox Code Playgroud)