在预期条件的上下文中指定的非布尔类型的表达式,在'END'附近

Mik*_*ler 4 sql sql-server sql-server-2005

那么也许有人可以指出我导致这个错误的正确方向?我已经和它斗争了几个小时并在网上搜索,我无法弄清楚我在这里做错了什么.它作为存储过程的一部分包含在内,我不知道是否重要,如果确实如此,我也可以包含它.表和字段名称已更改,以保护无辜...意味着我的工作.谢谢.

SELECT
              /* The fields are here*/
FROM
              /* my joins are here */
WHERE
    (Table.Field = stuff)
    AND
    (Table.Field2 = otherstuff)
    AND
    (Table2.Field3 = someotherstuff)
    AND
    CASE @param1
        WHEN 0 THEN 'Table.Field IS NULL'
        WHEN 1 THEN 'Table.Field2 IS NOT NULL'
        ELSE ''
    END
Run Code Online (Sandbox Code Playgroud)

谢谢你的回复.从技术上讲,egrunin是这个问题的正确答案,但OMG Ponies和Mark Byers几乎完全相同,只是错过了最后一件.再次感谢.

egr*_*nin 6

我很确定其他答案会遗漏一个案例:

WHERE 
(Table.Field = stuff)
AND
(Table.Field2 = otherstuff)
AND
(Table2.Field3 = someotherstuff)
AND
(
    (@param1 = 0 and Table.Field IS NULL)
    OR
    (@param1 = 1 and NOT Table.Field2 IS NULL)
    OR
    (@param1 <> 0 AND @param1 <> 1) -- isn't this needed?
)
Run Code Online (Sandbox Code Playgroud)