大于参数的可空数字的sql查询

标签 sql sql-server

简单表格:

create table Items
(
  Price money null
)

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

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

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

最佳答案

试试这个:

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

关于大于参数的可空数字的sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3414820/

相关文章:

sql - Elixir PostgreSQL - 选择查询返回不符合 WHERE 子句的结果

sql - 棘手的 SQL SELECT 语句 - 将两行合并为两列

c# - 如何在 C# 的消息框中显示 3 层应用程序中 SQL 异常(唯一标识符)的错误消息?

c# - 允许在 SQL 事务期间读取?

sql-server - ASP.NET Core 3.0-无法更新数据库

mysql - 如何在没有 UNIQUE 索引或 PRIMARY KEY 的情况下在 MySQL 中使用 ON DUPLICATE KEY UPDATE?

c# - 具有 2 个参数的存储过程

java - JPA:仅使用几个属性进行获取

sql-server - 为什么 SQL Server 没有捕获到这一点?子查询中的拼写错误导致意外删除

sql - 寻求 MS SQL 函数的解释