我有一张名字表:
John
彼得
彼得·保罗
玛丽
我在这些名称的下拉列表中添加了“全部”作为顶部的选项。
我想将从下拉列表中选择的名称作为参数传递给where子句。
我要尝试做的只有在name不以'All'形式传递时才有where子句。
SELECT City, State
FROM EmployeeDetails
WHERE @NAME =
CASE @NAME
WHEN 'All' THEN '1=1'
ELSE (EmployeeDetails.NAME LIKE '' + @NAME + '%')
我无法使用它。 ELSE语句给出错误“单词” LIKE”附近的错误语法。
查看其他我发现的StackOverflow问题:
在不在CASE语句中运行WHERE子句时,它适用于特定名称,例如:
WHERE (EmployeeDetails.NAME LIKE '' + @NAME + '%')
如果我搜索Peter,它将返回2个预期结果。玛丽1结果,等。
我显然无法通过“全部”。
答案 0 :(得分:6)
请勿在{{1}}中使用case
。只需:
where
我不确定SELECT City, State
FROM EmployeeDetails
WHERE (@NAME = 'All') OR (EmployeeDetails.NAME LIKE '' + @NAME + '%');
的目的是什么,但是您有疑问吗,所以我将其保留。