【发布时间】:2019-03-21 10:12:13
【问题描述】:
在我的网站中,我有一个按名称、zip、guid 等搜索的字段。现在它只适用于名称。我写了一个简单的查询
where (funeral_home_name like CONCAT('%', @searchFilter ,'%')) OR (funeral_home_zip5 like CONCAT('%', @searchFilter, '%'));
它工作正常,但我需要将此代码插入到带有“case”语句的存在过程中
where funeral_home_name like case when @searchFilter != '' then CONCAT('%',@searchFilter,'%') else '%' end ...
那我该怎么做呢?
【问题讨论】:
-
为什么不构造动态where子句并在执行时添加呢?
-
在
WHERE子句中使用AND/OR结构而不是case表达式 通常会更好。 -
有数百个类似的问题,但最好的答案可能是 Erland Sommarskog 的 Dynamic Search Conditions in T‑SQL
标签: sql sql-server search