-4

我需要在 CASE 语句的 THEN 部分中使用 OR 语句......像这样。

DECLARE @myColorPreference varchar(10)
SET @myColorPreference = 'ANY'

SELECT BikeColor, Make, Model
FROM BIKES
WHERE Color = CASE
                WHEN @myColorPreference = 'Blue' THEN 'Blue'
                WHEN @myColorPreference = 'ANY' THEN 'Blue' OR 'Red' OR 'Green'
          END
4

2 回答 2

2

假设 ANY 首选项意味着任何颜色,并且您希望将任何其他颜色首选项与指定的颜色相匹配,那么最简单的解决方案是:

SELECT BikeColor, Make, Model
FROM BIKES
WHERE @myColorPreference in (Color,'ANY')
于 2013-06-09T15:55:39.617 回答
1

为什么不只是:

SELECT BikeColor, Make, Model
FROM BIKES
WHERE Color = @myColorPreference OR
     @myColorPreference = 'ANY'

人们经常使他们的 SQL 过于复杂,并试图使其适应命令式语言的现有模式,而实际上他们需要制定一个更简单的WHERE子句来表达他们想要的东西。

于 2013-06-09T15:54:12.007 回答