Sql server 当一条语句中的筛选器值为null时,如何忽略TSQL Where条件?

Sql server 当一条语句中的筛选器值为null时,如何忽略TSQL Where条件?,sql-server,tsql,case,isnull,case-when,Sql Server,Tsql,Case,Isnull,Case When,当一条语句中的筛选器值为null时,如何忽略where条件 -- if @filter1LowerBound is null then select * from MyTable -- if @filter1LowerBound is not null then select * from MyTable where column1 > @filter1LowerBound 是否可以编写一个where条件来处理上述情况 我知道当我的列使用=,我可以使用CASE WHEN语句 或者说:

当一条语句中的筛选器值为null时,如何忽略where条件

-- if @filter1LowerBound is null then
select * from MyTable

-- if @filter1LowerBound is not null then
select * from MyTable
where column1 > @filter1LowerBound
是否可以编写一个where条件来处理上述情况

我知道当我的列使用=,我可以使用CASE WHEN语句

或者说:

select * from MyTable
where column1 = ISNULL(@filter1LowerBound, column1) 
但我有大于和小于运算符

我有大于和小于这样的过滤器,所以我需要让它工作

如何实现这一目标


谢谢

假设第1列是数字

select * from MyTable where column1 > ISNULL(@filter1LowerBound, column1-1)
select * from MyTable where column1 < ISNULL(@filter1LowerBound, column1+1) 

etc

假设第1列是数字

select * from MyTable where column1 > ISNULL(@filter1LowerBound, column1-1)
select * from MyTable where column1 < ISNULL(@filter1LowerBound, column1+1) 

etc

一种方法是组合如下条款:

SELECT * FROM MyTable 
WHERE (@filter1LowBound IS NULL OR column1 > @filter1LowerBound)
   -- AND other conditions here

一种方法是将以下条款组合在一起:

SELECT * FROM MyTable 
WHERE (@filter1LowBound IS NULL OR column1 > @filter1LowerBound)
   -- AND other conditions here
怎么样

select * from MyTable where 
   (@filter1LowerBound is null or column1 > @filter1LowerBound)
怎么样

select * from MyTable where 
   (@filter1LowerBound is null or column1 > @filter1LowerBound)

如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮{},以很好地格式化和语法突出显示它!如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮{},以很好地格式化和语法突出显示它!这不是Bort答案的副本吗?@Abir是和否,答案相同,我们两人在大致相同的时间发布,Bort在分钟标记前点击,我在分钟标记后点击,这不是Bort答案的副本吗?@Abir是和否,答案相同,我们两人在大致相同的时间发布,博尔特在一分钟前点击,我在一分钟后点击