Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据Microsoft SQL中的参数按条件子集进行筛选?_Sql_Sql Server - Fatal编程技术网

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

如何根据Microsoft SQL中的参数按条件子集进行筛选?,sql,sql-server,Sql,Sql Server,我在SQL查询中有一个参数,我想在其中选择可能行的子集,或者基于该参数选择一个 基本上,我有一个名为model的列,它可以包含1000、2000、3000、4000或5000。当参数设置为NULL时,我希望它只选择1000、2000和3000,而不是4000或5000 我尝试过各种案例陈述的组合,即 WHERE model = CASE WHEN @model = NULL THEN model = 1000 OR model = 2000 OR model = 3000 ELSE @mode

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

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

我尝试过各种案例陈述的组合,即

WHERE model = CASE WHEN @model = NULL THEN model = 1000 OR model = 2000 OR 
model = 3000 ELSE @model END AND <query continues>
当@model=NULL时model=CASE,则model=1000或model=2000或
型号=3000 ELSE@型号端和

如何在SQL Server中实现这一点?

只需使用
即可:

WHERE ( (@model is null and model in (1000, 2000, 3000)) or
        model = @model
      )

请尝试以下操作之一:

Where (model = @model OR 
(@model IS NULL AND model <> model IN (1000,2000,3000,4000))
其中(model=@model或
(@model为空,模型位于(1000200030004000))

其中(model=@model或(@model为空,model为5000)

我想只是没有把它放在
Where子句中。
Where (model = @model OR (@model IS NULL AND model <> model <> 5000)