逻辑 与 或 非的优先级(and or not 优先级)

刚才写一条hql语句,想起来之前上学那会老师的教诲:用到or的时候防止逻辑出错把需要or的条件用括号括起来。在写hql的时候就很注意,把需要or的条件括了起来,然后执行的时候看了下Hibernate执行的sql语句却没有括号,这会犯疑惑了,难道是Hibernate出问题了,通过一番求证,得出如下结论:并不是Hibernate出错了,而是自己基础太差了。下边就这个问题来分析下。

给大家看两条语句

1、select 1 from dual where (1=1 and 2=2) or (3=3 and 4=4) (这里考下大家,是否需要加括号呢?)

2、select 1 from dual where (1=1 or 2=2) and 3=3    (这里考下大家,是否需要加括号呢?)

对于第一条语句如果加上括号是多余的,由于表达式的优先级为(非>与>或)即(not > and > or),可得出就算去掉括号也是无关紧要的。

对于第二条语句如果去掉括号语句就变成了select 1 from dual where 1=1 or (2=2 and 3=3)   为了表达清楚意思故意用括号把2=2 and 3=3 括了起来。这样就跟要表达的意思不一致了。

时间: 2024-12-22 22:22:40

逻辑 与 或 非的优先级(and or not 优先级)的相关文章

你不得不知的逻辑或(||)与(&&)非(!)

最近重新翻开原生JS,又得到很多不同的体会,虽然现在开发框架那么多,但很多思想都还是离不开原生的基础.今天呢,我就根据自己的学习总结一下逻辑与(&&)和(逻辑或(||)和逻辑非(!).   基本定义       ||:逻辑或,只有表达式的值都为false,才返回false,其他情况返回true  比如:(8>5)&&(4<6),返回true:(8<5)&&(4<6),返回false       &&:逻辑与,若两边表达

Java/Android中的优先级任务队列的实践

版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com 刚刚把公司的活干完,去群里水,有几个小伙伴问我怎么实现队列,于是乎我来写一篇吧.本篇文章适用于Java和Android开发者,会从实现一个最简单的队列过渡到实现一个带有优先级的队列,保准你可以掌握基本的队列原理. 队列的基本理解 用生活中的一个情景来举个栗子,前段时间很火爆的电视剧<人民的名义>中有一个丁义珍式的窗口大家应该都知道了,我们不说<人民的名义>也不说丁义珍,我们来说说这个办

第15课 用户界面与业务逻辑的分离

1. 界面与逻辑 (1)用户界面模块(UI):接受用户输入及呈现数据 (2)业务逻辑模块(Business Logic):根据用户需求处理数据 2.用户界面与业务逻辑的交互 2.1 基本设计原则 (1)功能模块之间需要进行解耦 (2)核心思想:强内聚.弱耦合 ①每个模块应该只实现单一的功能 ②模块内部的子模块只为整体的单一功能而存在 ③模块之间通过约定好的接口进行交互 2.2 工程开发中的“接口” (1)广义:接口是一种契约(协议.语法.格式等) (2)狭义: ①面向过程:接口是一组预定义的函数

阻塞赋值与非阻塞赋值

     过程赋值:用于对reg型变量赋值,改变寄存器的值或为以后排定改变.      语法 {阻塞性(blocking)赋值} RegisterLValue = [ TimingControl] Expression; {非阻塞性(non-blocking)赋值} RegisterLValue <= [ TimingControl] Expression; 阻塞:在本语句中"右式计算"和"左式更新"完全完成之后,才开始执行下一条语句: 非阻塞:当前语句的执行

云计算设计模式(十六)——优先级队列模式

优先发送到服务,以便具有较高优先级的请求被接收和高于一个较低优先级的更快速地处理请求.这种模式是在应用程序是有用的,它提供不同的服务级别保证或者针对独立客户. 背景和问题 应用程序可以委托给其他服务的具体任务;例如,为了执行后台处理或与其他应用程序或服务的整合.在云中,消息队列通常用于将任务委派给后台处理.在许多情况下,请求由服务接收的顺序是不重要的.然而,在某些情况下,可能需要优先考虑的具体要求.这些要求必须早于较低优先级的其他可能先前已发送由应用程序进行处理. 解决方案 队列通常是先入先出(

C语言 结合方向 和优先级

重新翻了遍C语言,觉得对c语言运算符结合性有必要提一下,毕竟去年我自己刚学c语言的时候,就没搞明白结合性的问题. 什么是左结合?什么是右结合?它们是干嘛用的?它们是什么时候用的? 本文将围绕这几个问题展开.. (小白文,大神绕道) 先附录几个自己学习过程中的参考网站.(有些见解和例子来自一下网站) http://wenku.baidu.com/link?url=W2ofiBx4yEtrxAAfV8lUaR-bYSIuBox1_DH-1mG6g6q0VeNBR31OfKlaUXRQ6ARQMJEo

运算符、优先级、结合性

分类: C/C++ C语言语句分为5类: 1.   表达式语句 2.   函数调用语句 3.   控制语句 4.   复合语句 5.   空语句 表达式语句:表达式+分号: 函数调用语句:函数名+实际参数+分号:格式一般为:函数名(参数表): 控制语句: 条件判断语句 if语句,switch语句 循环执行语句 do while语句,while语句,for语句 转向语句 break语句,goto语句,continue语句,return语句 复合语句: 多个语句用{}括起来,组成复合语句,其中每条语

C语言运算符优先级及结合性

今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () [] -> . 自左向右 ! ~ ++ -- - (type) * & sizeof 自右向左 * / % 自左向右 + - 自左向右 << >> 自左向右 < <= > >= 自左向右 == != 自左向右 & 自左向右 ^ 自左向右

Matlab学习------逻辑型

逻辑型数据就是true(1)或者false(0),用来进行逻辑运算或者关系运算. 返回逻辑结果的函数(实例): >> m=[0,4,3;0,12,0] m = 0 4 3 0 12 0 >> logical(m) %将任意类型数据转化为逻辑数据,非0为逻辑真,0为逻辑假 ans = 0 1 1 0 1 0 >> true(3) %创建一个3*3的逻辑1矩阵 ans = 1 1 1 1 1 1 1 1 1 >> true(3,4) %创建一个3*4的逻辑1矩阵