首页
学习
活动
专区
圈层
工具
发布

SQL语句
EN

Stack Overflow用户
提问于 2014-08-21 21:40:49
回答 2查看 761关注 0票数 1

有像这样的存储过程。

代码语言:javascript
复制
CREATE PROCEDURE test
  @ID
  @inventory bit = 0
  @status nvarchar(2) = null
AS
BEGIN
 SELECT 
   ID
   INVENTORY = (SELECT SUM(Inventory) FROM Option WHERE /*Inventory if 0 with if 1 without*/)
   STATUS
 WHERE 
   --TODO Status if
END

例如,当status可以是null, '', 'preordered'时,如何创建if语句:如果null选择所有状态,如果''选择空状态,如果某些状态-选择某些状态。需要为库存创造条件(有/没有)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-21 21:46:41

如果null选择所有状态,如果'‘选择空状态,如果某些状态-选择某些状态

只需添加空状态检查,在这种情况下不包含任何其他条件:

代码语言:javascript
复制
WHERE (@status IS NULL) /* ALL */ 
   OR
    (@status = STATUS) /* match status */

如果添加了库存条件,请确保将状态检查放在括号中。并且在OR之前得到评估,所以最好在逻辑上对条件进行分组,这样它们就不会被无序地求值。

票数 2
EN

Stack Overflow用户

发布于 2014-08-21 21:50:01

代码语言:javascript
复制
WHERE (@status IS NULL  OR (@status  =STATUS))

如果@Status为null,则不排除记录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25436406

复制
相关文章

相似问题

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