AND、OR運算子的組合使用

來源:互聯網
上載者:User

6.2.3  AND、OR運算子的組合使用

在WHERE子句中,通過AND、OR運算子可以同時串連多個條件,當然AND、OR運算子也可以同時使用。但是當AND、OR運算子同時存在時,其優先順序如何確定呢?與大多數語言一樣,SQL語言認為AND運算子的運算層級要高於OR運算子。即當出現

condition1
OR   condition2
AND   condition3

時,其運算實際上是等價於

condition1
OR   (condition2 AND condition3)

.因此,AND、OR運算子需要同時使用時,一定要注意運算子的優先順序。

執行個體5  同時使用AND、OR運算子實現查詢

假如需要查詢所有電腦系和生物系中,且工資收入(SAL)超過1000的教師的姓名(TNAME)、系(DNAME)、工資(SAL)資訊。如果採用如下SQL代碼:

SELECT  TNAME, DNAME, SAL
FROM   TEACHER
WHERE    DNAME='電腦'
OR   DNAME='生物'
AND   SAL>1000
ORDER BY  SAL
.運行結果6.5所示。

 
圖6.5  電腦系或者生物系中工資大於1000的教師

很顯然沒有得到預期的計算結果,這是因為AND運算子的運算層級要高於OR運算子,代碼實際上實現的查詢是電腦系的所有教師以及生物系中的工資大於1000的教師的相關資訊。要實現例中需要的查詢結果,正確的SQL代碼為:

SELECT  TNAME, DNAME, SAL
FROM   TEACHER
WHERE    (DNAME='電腦' OR DNAME='生物')
AND   SAL>1000
ORDER BY  SAL

運行結果6.6所示。

 
圖6.6  電腦系和生物系中工資大於1000的教師

可以發現,當在OR運算子串連的兩個條件加上括弧( )後,得到了需要的查詢結果。這是因為,括弧( )的優先順序高於AND運算子,執行過程就先於AND運算子。

注意 當OR運算子和AND運算子同時運用時,建議使用者不要考慮其預設的優先順序順序,而是採用括弧( )來實現需要的執行順序,這樣可以增強程式的可讀性。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.