码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-09-01 19:40:03      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:and   or   优先级   逻辑与或非   

        刚才写一条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 括了起来。这样就跟要表达的意思不一致了。

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

标签:and   or   优先级   逻辑与或非   

原文地址:http://blog.csdn.net/liu251890347/article/details/38983141

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!