程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 邏輯 與 或 非的優先級

邏輯 與 或 非的優先級

編輯:關於JAVA

剛才寫一條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 括了起來。這樣就跟要表達的意思不一致了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved