当前位置:天才代写 > tutorial > JAVA 教程 > 逻辑 与 或 非的优先级

逻辑 与 或 非的优先级

2017-11-01 08:00 星期三 所属: JAVA 教程 浏览:62

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

 

    关键字:


天才代写-代写联系方式