sql查询可空数字大于参数

Val*_*yev 3 sql sql-server

简单表:

create table Items
(
  Price money null
)
Run Code Online (Sandbox Code Playgroud)

现在我需要创建一个存储过程,接受一个类型为bit的 参数@ItemsWithPriceTenDollarsOrMore:

  1. 如果参数为null,则返回所有项
  2. 如果参数= 1,则返回价格> = 10的所有项目
  3. 如果参数= 0,则返回价格<10的所有项目

我很难在单个where语句中表达此过滤器(不使用动态sql或条件逻辑).

Pav*_*yuk 5

试试这个:

SELECT * FROM Items
WHERE (@ItemsWithPriceTenDollarsOrMore = 1 AND Price >=10)
OR (@ItemsWithPriceTenDollarsOrMore = 0 AND Price <10)
OR (@ItemsWithPriceTenDollarsOrMore IS NULL)
Run Code Online (Sandbox Code Playgroud)