首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server BETWEEN and OR语句用法

问SQL Server BETWEEN and OR语句用法
EN

Stack Overflow用户
提问于 2012-12-10 21:46:02
回答 3查看 204关注 0票数 0

我正尝试在SQL Server的同一个SQL语句中使用getting OR子句,每次我得到的结果都是空的,有人知道这一点吗?我的原始SQL是这样的:

代码语言:javascript
复制
SELECT * 
FROM opportunity AS oppt
WHERE oppt.Location='O/S' 
   OR oppt.Location='Overseas' 
  AND oppt.OPEN_DATE BETWEEN '2014-01-01 00:00:00.000' 
                         AND '2010-01-01 00:00:00.000'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-10 21:59:15

为了补充@RBarryYoung的答案,我还建议用括号括起你的条件。这使得你想要的结果/条件应该如何应用变得清晰。

即

代码语言:javascript
复制
WHERE (oppt.Location='O/S' 
   OR oppt.Location='Overseas')
  AND oppt.OPEN_DATE BETWEEN '2014-01-01 00:00:00.000' 
                         AND '2010-01-01 00:00:00.000'

与以下内容不同:

代码语言:javascript
复制
WHERE oppt.Location='O/S' 
   OR (oppt.Location='Overseas'
  AND oppt.OPEN_DATE BETWEEN '2014-01-01 00:00:00.000' 
                         AND '2010-01-01 00:00:00.000')

上面的第二个是你目前所拥有的,而你可能指的是第一个。

阅读Operator Precedence -它告诉你各种运算符的执行顺序。在这种情况下,在OR之前应用AND。但是,使用适当的括号对条件进行分组有助于消除具有意外后果的风险运算符优先级。

我怀疑在你的情况下,你想要我上面的第一个例子,实际上你可以合理地归结为:

代码语言:javascript
复制
WHERE oppt.Location IN ('O/S', 'Overseas')
      AND oppt.OPEN_DATE BETWEEN '2010-01-01 00:00:00.000' 
                             AND '2014-01-01 00:00:00.000')
票数 2
EN

Stack Overflow用户

发布于 2012-12-10 21:49:58

BETWEEN谓词要求较低的值是第一个,较高的值是第二个,否则将什么也得不到。

票数 5
EN

Stack Overflow用户

发布于 2012-12-10 21:51:23

尝试使用()进行查询,并在语句之间更正日期(lower then higher),

在您的情况下,它将是:

代码语言:javascript
复制
SELECT * 
FROM opportunity AS oppt
WHERE (oppt.Location='O/S' OR oppt.Location='Overseas')
    AND oppt.OPEN_DATE BETWEEN '2010-01-01' AND '2014-01-01'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13802205

复制
相关文章

相似问题

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