SQL Where語句中AND與OR的計算次序 .


AND 用在where子句中,用來指示檢索滿足所有給定條件的行,而OR用在where子句中,用來指示檢索匹配任一給定條件的行。

Where子句中可包含任意數目的AND和OR操作符號,但是要注意在SQL規范中AND操作符的優先級要高於OR操作符。

若一時大意,操作符就會被錯誤組合,查詢出來的結果也是與自己期望南轅北轍了。

 

假如需要列出價格為5元以上且由瑞興生物制葯公司或星城制葯廠生產的所有產品

  1. Select prod_name,prod_price From Products Where supply like '瑞興%' or supply like '星城%' And prod_price>=10  
Select prod_name,prod_price From Products Where supply like '瑞興%' or supply like '星城%' And prod_price>=10
  1. prod_name                 prod_price  
prod_name                 prod_price
  1. 苯唑西林鈉(苯唑青霉素)        6.50  
  2. 頭孢氨苄                       13.50  
  3. 頭孢羥氨苄                     8.00  
  4. 硫酸慶大霉素                   15.00  
  5. 紅霉素                         5.50  
苯唑西林鈉(苯唑青霉素)        6.50
頭孢氨苄                       13.50
頭孢羥氨苄                     8.00
硫酸慶大霉素                   15.00
紅霉素                         5.50


這個查詢的結果與自己期望的結果不一致。

  1. 硫酸慶大霉素                   15.00  
硫酸慶大霉素                   15.00


此問題就是由於使用OR、AND操作符默認計算次序造成的,解決的方法就是使用括號明確地分組相應的操作符。

  1. 任何時候使用具有AND和OR操作的where子句,都應該使用括號明確地分組操作符消除歧義,不要過分的依賴默認計算次序。  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM