首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在CASE语句中作为ELSE子句的值范围

在CASE语句中作为ELSE子句的值范围
EN

Stack Overflow用户
提问于 2017-09-27 02:03:35
回答 1查看 192关注 0票数 0

我有一个存储的proc,它应该基于一个可以是NULL的整数来过滤结果,并且我需要能够选择匹配整数或检索所有结果的结果,但是我无法为" all“结果部分找出语法。查询基本上如下:

代码语言:javascript
运行
复制
Select * from dbo.TABLE 
WHERE [IDField] = 
  CASE 
    WHEN ISNULL(@ID, 0) > 0 THEN @ID 
    ELSE ????? 
  END

我希望使用IN范围来包含所有的值,因为将其设置为0Null不会返回任何结果,但这是行不通的:

代码语言:javascript
运行
复制
Select * from dbo.TABLE 
WHERE [IDField] = 
  CASE 
    WHEN ISNULL(@ID, 0) > 0 THEN @ID 
    ELSE 1 OR 2 OR 3 
  END

或者这个:

代码语言:javascript
运行
复制
Select * from dbo.TABLE 
WHERE [IDField] IN (
  CASE 
    WHEN ISNULL(@mID, 0) > 0 THEN @mID 
    ELSE 1,2,3 
  END
)
EN

Stack Overflow用户

回答已采纳

发布于 2017-09-27 02:12:48

在没有case的情况下说这个

代码语言:javascript
运行
复制
SELECT * 
FROM dbo.TABLE 
WHERE @id is null OR IDField = @id;

然后,您可以将其扩展到:

代码语言:javascript
运行
复制
SELECT * 
FROM dbo.TABLE 
WHERE (COALESCE(@ID, 0) > 0 AND IDField = @id) OR
      IDField IN (1, 2, 3)
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46438364

复制
相关文章

相似问题

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