首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -如果变量不为空,则包含where条件

SQL -如果变量不为空,则包含where条件
EN

Stack Overflow用户
提问于 2020-01-24 00:47:55
回答 3查看 46关注 0票数 0

我正在尝试添加一个where条件,只有在变量@schoolId不为空时才需要检查,否则将返回所有结果。请注意,If条件不能使用,因为它是一个非常大的查询。这只是其中的一部分。

代码语言:javascript
运行
复制
Table Name - Students

Id Name   SchoolId
1  John      6
2  Mark      6
3  Alice     12
4  Prince   null

查询

代码语言:javascript
运行
复制
Select * from Students st
where st.SchoolId = Case when @schoolId  is not null then @schoolId else st.SchoolId End

因此,如果@學校if为null,我希望返回所有4行。如果变量为空,我也希望它返回SchoolId为空的结果。当前使用上述查询时,它不会返回第4行

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-24 00:49:06

您可以使用布尔逻辑而不是case表达式:

代码语言:javascript
运行
复制
where (@schoolId is null) or
      (st.SchoolId = @schoolId);
票数 1
EN

Stack Overflow用户

发布于 2020-01-24 00:48:58

只需使用or

代码语言:javascript
运行
复制
where (st.SchoolId = @schoolId or @schoolId is null)

您有两个独立的条件,此命令将同时检查这两个条件。

票数 1
EN

Stack Overflow用户

发布于 2020-01-24 02:10:46

看看这个:

代码语言:javascript
运行
复制
declare @schoolId int

If @schoolId is null
Select * 
from dbo.Students st
Else
Select * 
from dbo.Students st
where st.SchoolId = @schoolId
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59883460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档