在案例中使用AND

Kyl*_*son 0 sql sql-server case-when

我想CASE WHEN在以下工作语句中添加一个:

Select ...
From...
Where 
    d.name like @filter and d.flags & 0x0F <> 0
Run Code Online (Sandbox Code Playgroud)

我有一种情况,如果用户将BIT @showHidden参数设置为true ,我希望过滤.这是我尝试过的:

SELECT...        
FROM...
WHERE
d.name like 
    CASE WHEN @showHidden = 'true' THEN
        @filter
    ELSE
        @filter and d.flags & 0x0F <> 0
Run Code Online (Sandbox Code Playgroud)

我收到错误:

'和'附近的语法不正确.

是否有可能AND在一个CASE WHEN

A *_* ツ 5

尝试:

SELECT...        
FROM...
WHERE d.name like @filter 
  and ( @showHidden = 'true' -- show everything 
      OR 
        d.flags & 0x0F <> 0  -- check if name should be hidden
      )
Run Code Online (Sandbox Code Playgroud)