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

SQL逻辑运算符优先级:And and Or

贺波
2023-03-14
问题内容

下面的两个语句是否等效?

SELECT [...]
FROM [...]
WHERE some_col in (1,2,3,4,5) AND some_other_expr

SELECT [...]
FROM [...]
WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr

我可以使用某种真值表来验证这一点吗?


问题答案:

And优先于Or,因此,即使a <=> a1 Or a2

Where a And b 

与…不同

Where a1 Or a2 And b,

因为那将被执行

Where a1 Or (a2 And b)

并且想要使它们相同,是以下内容(使用括号覆盖优先级规则):

 Where (a1 Or a2) And b

这是一个示例说明:

Declare @x tinyInt = 1
Declare @y tinyInt = 0
Declare @z tinyInt = 0

Select Case When @x=1 OR @y=1 And @z=1 Then 'T' Else 'F' End -- outputs T
Select Case When (@x=1 OR @y=1) And @z=1 Then 'T' Else 'F' End -- outputs F


 类似资料:
  • 问题内容: 下面的两个语句是否等效? 和 我可以使用某种真值表来验证这一点吗? 问题答案: 优先于,因此,即使 与…不同 因为那将被执行为 并且想要使它们相同的是以下内容(使用括号覆盖优先级规则): 这是一个示例说明:

  • 为什么JVM不遵守它自己的规则。以下面的例子为例。 结果是: 而实际结果应该是,根据&运算符是在运算符之前求值的事实: 对于为什么没有正确实现这一点,有一些解释会很好。即使在第二部分周围添加括号,也没有使用正确的优先级。

  • 本文向大家介绍oracle逻辑运算符与其优先级简介,包括了oracle逻辑运算符与其优先级简介的使用技巧和注意事项,需要的朋友参考一下 Oracle的逻辑运算符也是用在SQL语句中必不可少的因素,一共有三个 逻辑运算符 意义 and 双值运算符,如果左右两个条件都为真,则得到的值就为真 or 双值运算符,只要左右两个条件有一个为真,则得到的值就为真 not 单指运算符,如果原条件为真,则得到真,如

  • 这是我在StackOverflow上的第一个问题,因此我想以前有人在这里问过,但是我在搜索栏中键入的所有内容都给了我不同的问题。(或者有时根本没有结果!) 我正在学习w3Schools,但我看到了这个看似简单的代码片段,它引发了一小部分问题: 本质上,守则说: 在这种特殊情况下,“test”在成功时返回字符串,在失败时返回(布尔)FALSE。 以下是在我心中激起的问题。 > 至于条件/if语句开头

  • 从高到低顺序如下: ^ not - (一元运算) * / + - ..(字符串连接) < > <= >= ~= == and or

  • 通过前面的学习我们知道运算符有不同的类型,当这些不同类型的运算符出现在同一个表达式中时,就必须遵循运算符的优先级来进行运算,才能保证运算的合理性和结果的正确性、唯一性。运算符的优先级决定了表达式中各个部分执行运算的先后顺序。 下表中详细介绍了 C# 中运算符的优先级顺序: 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[整型表达式] 左到右   () 圆括号 (表