我有两个可选参数empName、empLoc。这两个参数都可以为 null、空或具有某些值。如果两者都有值,我将必须获取所有值,如果 empName 有值,那么我只需要获取 empName 等于传递的参数@empName 的值,并且与 @empLoc 相同。我知道我可以在同一个存储过程中编写单独的 sql,但我想使用 CASE 子句来完成,因为它会保存大部分重复的代码。但是我在设置查询时遇到问题。我知道这是 CASE 条款。这是我的查询的样子:
SELECT
EmpID,
EmpDept
FROM Employee
WHERE TimeStamp = @timeStamp
**AND (CASE
WHEN DATALENGTH(@empName) > 0 THEN EmployeeName LIKE '%' +@empName+'%'
ELSE
EmployeeLocation LIKE '%' +@empLoc+'%'
END)**
注意:我已经对这些参数进行了空检查。此外,仅当 @empName 或 @empLoc 具有某些值时,此查询才会运行。
任何建议如何解决这个问题?