我正在尝试使用以下代码将多个条件添加到SQL Server 2014中的Where子句,并且我收到语法错误。
我已尝试过一个案例陈述,但根据此网站上的示例无法使其工作。
Where
iif(ss.DATAAREAID = 'USMF',
(ss.ITEMGROUPID like 'S%' and ss.ITEMGROUPID not like 'SMS%'),
(ss.ITEMGROUPID like 'SW%' and ss.ITEMGROUPID like 'SS%')
我相信这是一个快速的解决方案,但任何帮助都会受到赞赏。
答案 0 :(得分:5)
不要使用条件逻辑。只需使用布尔表达式:
Where (ss.DATAAREAID = 'USMF', and ss.ITEMGROUPID like 'S%' and ss.ITEMGROUPID not like 'SMS%') or
(ss.DATAAREAID <> 'USMF' and ss.ITEMGROUPID like 'SW%' and ss.ITEMGROUPID like 'SS%')
注意:iif()
是SQL Server函数,但它是为了向后兼容MS Access而引入的。您应该使用ANSI标准case
表达式。
您的版本不起作用,因为SQL Server不会将布尔表达式的结果视为有效值。你需要做这样的事情:
where (case when . . . and . . . then 1
else 0
end) = 1
上述内容未考虑NULL
个值。如果需要,可以轻松添加该条件。