[英]Using LIKE predicate inside CASE expression in WHERE clause
我有一張名字表:
約翰
彼得
彼得·保羅
瑪麗
我有這些名稱的下拉列表,並且在頂部添加了“全部”作為選項。
我想將從下拉列表中選擇的名稱作為參數傳遞給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結果,等等。
我顯然不能通過“全部”。
不要在where
使用case
。 只需做:
SELECT City, State
FROM EmployeeDetails
WHERE (@NAME = 'All') OR (EmployeeDetails.NAME LIKE '' + @NAME + '%');
我不確定'' +
的目的是什么,但您有疑問嗎,所以我將其保留。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.