6.2.2? OR運算符
OR運算符表示“或”的關系。當可能有多個條件為True,但只要有一個為True就滿足搜索要求時,可以使用OR運算符來組合搜索條件。OR在結合兩個布爾表達式時,只要其中一個條件為True時,便傳回True。OR運算符的真值表如表6-3所示。
表6-3?OR真值表
表?達?式?一 | 表?達?式?二 | 結????果 |
True | True | True |
True | False | True |
True | NULL | True |
False | False | False |
False | NULL | NULL |
NULL | NULL | NULL |
注意?NULL與True進行OR運算時,結果為True而不是NULL。
語法如下:
SELECT??column FROM ??table_name WHERE???? condition1 OR??????? ?condition2 |
在WHERE子句中,通過OR運算符連接了兩個查詢條件condition1和condition2,只要其中一個條件為True,WHERE子句值就為True,DBMS會將當前記錄包括在結果表中;如果WHERE子句求值為False或NULL,則DBMS排除該值。
實例3? 使用OR運算符實現條件查詢
從TEACHER表中查詢計算機系和生物系的所有教師的姓名(TNAME)、系(DNAME)、工資(SAL)信息。實例代碼:
SELECT??TNAME, DNAME, SAL FROM ??TEACHER WHERE? ??DNAME='計算機' OR???DNAME='生物' ORDER BY??? ?DNAME |
運行結果如圖6.3所示。
![]() |
圖6.3? 計算機和生物系的教師 |
NULL與True進行OR運算時,結果為True。下面通過一個實例來說明。
實例4? NULL與True進行OR運算
從TEACHER表中查詢工資(SAL)高于1500或者年齡小于45的教師的所有信息。實例代碼:
SELECT??* FROM ??TEACHER WHERE? ??SAL >1500 OR???AGE < 45 ORDER BY??? ?SAL |
運行結果如圖6.4所示。
![]() |
圖6.4? 年齡小于45或者工資大于1500的教師 |
從結果中,不難發現前兩條記錄的SAL列均為NULL。雖然判別式“SAL >1500”對這兩條記錄的計算結果為NULL,但是判別式“AGE < 45”的計算結果為True,因此再經過OR運算,最終WHERE子句結果為True。