当前位置: 首页 > 面试题库 >

SQL'AND'或'OR'首先出现吗?[复制]

毛成济
2023-03-14
问题内容

这个问题已经在这里有了答案

SQL逻辑运算符优先级:和和或 (4个答案)

7年前关闭。

我有以下查询:

SELECT * FROM MUFFIN_TYPES MT
  WHERE MT.flavor IS NULL 
    OR MT.flavor IS NOT NULL 
    AND MT.additionDate IS NOT NULL

如果不弄清楚括号,这是令人困惑的。会MT.flavor IS NULL OR MT.flavor IS NOT NULL永远评估为真吗?还是将其评估为MT.flavor IS NULL (OR MT.flavor IS NOT NULL AND MT.additionDate IS NOT NULL)

我找不到有关此事的任何文档。我是两个选项中的后者,但我不确定。

注意:我正在使用Oracle Pl / SQL。


问题答案:

AND的优先级高于OR:

来自Oracle
12.1文档

(AND和OR的优先级至少与版本7一致-
可能更进一步,但我没有文档链接)

先前版本:

  • 版本8
  • 版本7

运算符的优先级显示在下面的列表中,从最高优先级到最低优先级。一起显示在一行上的运算符具有相同的优先级。

INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR
= (assignment), :=

但是,我强烈建议使用括号,以确保清楚并确保按您期望的顺序对运算符进行评估。



 类似资料:
  • 初次见面,请多多关照。我是生在博多,成长在Git社区的「猴子老师」。今天我们要来一起学习版本管理系统「Git」哦。 要把文档还原到编辑前的状态,大家都是怎么做的呢? 最简单的方法就是先备份编辑前的文档。使用这个方法时,我们通常都会在备份的文档名或目录名上添加编辑的日期。但是,每次编辑文档都要事先复制,这样非常麻烦,也很容易出错。 再加上,如果像上图那样毫无命名规则的话,就无法区分哪一个文档是最新的

  • 问题内容: 这些表单集表现出与我想要的相反的行为。 我的视图设置如下: 我的模板如下所示: 这样,像我想要的那样,它最初仅生成1种形式。但是我想要一种表格! 当我使用JavaScript动态添加空白表单时,所有这些多余的表单都是必需的,而这是我所不希望的。 从文档: 表单集足够聪明,可以忽略未更改的其他表单。 这是第一种形式展示的行为(不是我想要的),而不是其他形式展示的行为(我想要的)。 我是否

  • 对不起,如果我的问题看起来很奇怪,我费了很大的劲才找到一个好的方法来问这个问题。我现在正在尝试把你的图片放到HTML中,但是我不知道是否可以设置一个列(或者几个div)使它们对齐,但是当我切换到移动设备时,列(或者几个div)出现在末尾,而不是从左边开始的div之间。我做了一些尝试,但没有什么好的结果,而且我还不太习惯Twitter的引导程序 事先谢谢你

  • 对不起,如果我的问题看起来很奇怪,我费了很大的劲才找到一个好的方法来问这个问题。我现在正在尝试把你的图片放到HTML中,但是我不知道是否可以设置一个列(或者几个div)使它们对齐,但是当我切换到移动设备时,列(或者几个div)出现在末尾,而不是从左边开始的div之间。我做了一些尝试,但没有什么好的结果,而且我还不太习惯Twitter的引导程序 事先谢谢你

  • 问题内容: 如果我有以下代码: 请问或会首先评估? 问题答案: 首先评估索引。请参阅JLS第15.26.1节,尤其是: 15.26.1。 简单赋值运算符= … 如果左侧操作数是数组访问表达式(第15.13节),可能包含在一对或多对括号中,则: 1. 首先,评估左侧操作数数组访问表达式的数组引用子表达式。如果该评估突然完成,则赋值表达式由于相同的原因而突然完成;(左操作数数组访问表达式的)索引子表达

  • 问题内容: 假设我有两个表A和B以及以下查询: mysql是先执行联接还是在哪里执行? 编辑: 例如,如果A包含1000行,那么在where条件之后它将仅包含1行。在1行表上执行联接的效率要高得多,因此似乎首先执行where,然后再执行联接才更有效率。 问题答案: 在之前发生然而,… 该子句是联接所返回的所有行的过滤器,但是优化器会认识到,如果存在索引,它将用于从该匹配中检索行,则将发生联接,然后