如何根据Microsoft SQL中的参数按条件子集进行过滤?

时间:2017-07-06 01:24:51

标签: sql sql-server

我在SQL查询中有一个参数,我想在其中选择可能行的子集,或者根据参数选择一个。

基本上,我有一个名为model的列,它可以包含1000,2000,3000,4000或5000.当参数设置为NULL时,我希望它只选择1000,2000和3000,但不是4000或5000。

我尝试了各种CASE语句组合,即

WHERE model = CASE WHEN @model = NULL THEN model = 1000 OR model = 2000 OR 
model = 3000 ELSE @model END AND <query continues>

如何在SQL Server中实现此目的?

2 个答案:

答案 0 :(得分:1)

只需使用or

执行此操作
WHERE ( (@model is null and model in (1000, 2000, 3000)) or
        model = @model
      )

答案 1 :(得分:0)

尝试以下方法之一:

Where (model = @model OR 
(@model IS NULL AND model <> model IN (1000,2000,3000,4000))

OR

Where (model = @model OR (@model IS NULL AND model <> model <> 5000)