我有两个可选参数empName,empLoc。这两个参数都可以为空,空或具有某些值。如果两者都有值,我将不得不获得所有值,如果empName有值,那么我只需要获取值,其中empName等于传递参数@empName,并且与@empLoc相同。我知道我可以在同一个存储过程中编写单独的sql,但是我想使用CASE子句来完成它,因为它将保存大部分重复的代码。然而,我在设置查询时遇到了问题。我知道这是CASE条款。 这里是我的查询看起来是这样的:SQL CASE在Where子句中?
SELECT
EmpID,
EmpDept
FROM Employee
WHERE TimeStamp = @timeStamp
**AND (CASE
WHEN DATALENGTH(@empName) > 0 THEN EmployeeName LIKE '%' [email protected]+'%'
ELSE
EmployeeLocation LIKE '%' [email protected]+'%'
END)**
注:即时通讯已经在做这些参数的空检查。此外,只有在@empName或@empLoc具有某些值的情况下,该查询才会运行。
任何建议如何解决这个问题?
你没有说你的问题是什么? – ilanco
为什么你甚至使用' LIKE'?这些信息不应该存储在某个地方吗? – swasheck