SQL子句和LIKE在where子句中

Dee*_*ons 4 sql search case switch-statement sql-like

我一直在打破这个希望,这是可能的

declare @locationType varchar(50);
declare @SearchTerm NVARCHAR(100);

SELECT column1, column2
FROM whatever
WHERE
CASE @locationType
    WHEN 'location' THEN account_location LIKE @SearchTerm
    WHEN 'area' THEN Area LIKE @SearchTerm
    WHEN 'division' THEN xxx_location_division LIKE @SearchTerm
END
Run Code Online (Sandbox Code Playgroud)

我在这里复制了另一个相关帖子的代码.

我收到错误:

关键字"LIKE"附近的语法不正确.

Fra*_*ois 6

declare @locationType varchar(50);
declare @SearchTerm NVARCHAR(100);

SELECT column1, column2
FROM whatever
WHERE
   (@locationType = 'location' AND account_location LIKE @SearchTerm)
OR
   (@locationType = 'area' AND Area LIKE @SearchTerm)
OR
   (@locationType = 'division' AND xxx_location_division LIKE @SearchTerm)
Run Code Online (Sandbox Code Playgroud)

确保@SearchTerm以/结尾开始%- > - 或使用'%' + @SearchTerm + '%'.

有关LIKE运算符的更多信息.

---更新----

SELECT column1, column2
FROM whatever
WHERE
(
  CASE @locationType
     WHEN 'location' THEN account_location
     WHEN 'area' THEN Area
     WHEN 'division' THEN xxx_location_division
  END
) LIKE @SearchTerm
Run Code Online (Sandbox Code Playgroud)