Sql server 如何在存储过程中为定量列或日期列参数编写where子句?

Sql server 如何在存储过程中为定量列或日期列参数编写where子句?,sql-server,stored-procedures,Sql Server,Stored Procedures,问题是:我需要创建一个get表存储过程,我有许多定量列或日期列,如 Weight DECIMAL NULL Cost MONEY NULL Wattage INT NULL 当我使用 Create PROCEDURE TABLE.P @Weight DECIMAL @Cost MONEY @Wattage INT Select Weight, Cost, Wattage From Table Where

问题是:我需要创建一个get表存储过程,我有许多定量列或日期列,如

Weight DECIMAL NULL
Cost MONEY NULL
Wattage INT NULL
当我使用

Create PROCEDURE TABLE.P
   @Weight DECIMAL 
   @Cost MONEY 
   @Wattage INT 

   Select 
       Weight, Cost, Wattage 
   From 
       Table
    Where 
       Weight= or @Weight is null
       and Cost=
我不知道如何写where子句,我知道我应该使用BETWEEN函数,但是如何为定量列或日期列编写它


谢谢

如果使用BETWEEN,当然需要上下两个值。要获取问题中显示的内容并对任何传递的值(忽略任何未传递或传递为NULL的值)进行相等性筛选,请尝试以下操作:

SELECT Weight, Cost, Wattage
FROM Table
WHERE (@Weight IS NULL OR Weight = @Weight)
  AND (@Cost IS NULL OR Cost = @Cost)
  AND (@Wattage IS NULL OR Wattage = @Wattage)

中间查询将有更多的条件,但
的一般概念(参数为NULL或使用非NULL参数的条件)
仍然有效。

中间工作相同,无论列类型如何。e、 g.
低值和高值之间的where字段
。如果您想要两个值之间的值;您必须传入这两个值;e、 g.
从表中选择*,其中重量介于@lowWeight和@highWeight之间
。如果您只需要一个等于,您可以从表中选择*,其中weight=@weight。如果您想考虑舍入误差,您可以从表中选择*,其中地板(重量)=地板(@weight);根据您的需要提供大量其他选项。谢谢,如果我使用中间值,我应该创建上限值和下限值。