TSQL或CASE语句的THEN部分

时间:2013-06-09 15:49:30

标签: sql-server tsql case

我需要在CASE语句的THEN Section中使用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

2 个答案:

答案 0 :(得分:2)

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

SELECT BikeColor, Make, Model
FROM BIKES
WHERE @myColorPreference in (Color,'ANY')

答案 1 :(得分:1)

为什么不呢:

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

人们经常过度复杂化他们的SQL并尝试使其适合命令式语言中的现有模式,而实际上他们需要制定一个更简单的WHERE条款来说明他们想要的内容。