T-SQL其中int = @ var/@ var = null?

Pie*_*rcy 2 sql t-sql sql-server null integer

我有一种情况,我调用存储过程并传入一些变量.在某些情况下,我将传递null,我希望它返回所有内容.采取以下(年龄为整数列):

[Table]  
[Name] | [Age]  
Mike   | 22  
Fred   | 18  
Bob    | 22 



SELECT * FROM [table] WHERE [Age]=@AgeVar
Run Code Online (Sandbox Code Playgroud)

现在,如果我通过22,我会得到迈克和鲍勃.同样地传入18将让我得到弗雷德.但是,当我传入null /不设置@AgeVar时,如果我想要所有3行怎么办?这是我的问题,非常简单.

编辑:Sproc是非常复杂的,我真的不想把所有部分加倍,但必须要两次,因为在下面的一个答案中.还有其他方法吗?

Chr*_*ain 9

SELECT * FROM [table] WHERE [Age]=@AgeVar OR @AgeVar IS NULL
Run Code Online (Sandbox Code Playgroud)

正如上面和下面多次提到的,这种技术会破坏大型表的查询性能.用户要小心.

  • JUST FYI ......这对SqlServer中的查询执行计划造成了严重破坏......我们最近因为上述查询而不得不重构一堆SPROC. (8认同)