Oracle Or子句


Oracle Or子句

在本教程中,我們來學習如何使用Oracle OR運算符來組合兩個或更多的布爾表達式。

Oracle OR運算符介紹

OR運算符是一個邏輯運算符,它組合了布爾表達式,如果其中一個表達式為真(true),則返回true

以下說明OR運算符的語法:

expression_1 AND expression_2 
SQL

下表顯示了OR運算符在truefalseNULL值之間的結果。

TRUE FALSE NULL
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE NULL
NULL TRUE NULL NULL

我們經常在SELECTDELETEUPDATE語句的WHERE子句中使用OR運算符來形成過濾數據的條件。

如果在語句中使用多個邏輯運算符,則Oracle會在評估NOTAND運算符之后評估OR運算符。 但是,可以使用括號更改評估的順序。

Oracle OR運算符的例子

我們將使用示例數據庫中的orders表進行演示。表結構如下圖所示 -

訂單表結構

1. Oracle OR運算符組合兩個布爾表達式的例子

以下示例查找狀態為掛起(Pending)或取消(Canceled)的訂單,參考以下查詢語句 -

SELECT order_id, customer_id, status, TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date FROM orders WHERE status = 'Pending' OR status = 'Canceled' ORDER BY order_date DESC; 
SQL

在這個例子中,語句返回了滿足下列表達式之一的所有訂單:

status = 'Pending' -- 或 status = 'Canceled' 
SQL

執行上面查詢語句,得到以下結果 -

2. Oracle OR運算符結合兩個以上的布爾表達式的例子

我們經常使用OR運算符來組合兩個以上的布爾表達式。 例如,以下語句檢索負責以下銷售員ID是60,6162的訂單:

SELECT order_id, customer_id, status, salesman_id, TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date FROM orders WHERE salesman_id = 60 OR salesman_id = 61 OR salesman_id = 62 ORDER BY order_date DESC; 
SQL

執行上面查詢語句,得到以下結果 -

可以使用IN運算符來代替使用多個OR運算符,如下例所示:

SELECT order_id, customer_id, status, salesman_id, TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date FROM orders WHERE salesman_id IN(60, 61, 62) ORDER BY order_date DESC; 
SQL

該查詢返回的結果與使用上面的OR運算符返回的結果相同。

3. Oracle OR運算符與AND運算符結合使用的示例

可以將OR運算符與其他邏輯運算符(如ANDNOT)結合起來,形成一個條件。 例如,以下查詢將返回屬於客戶ID為44並且已取消(Canceled)或掛起(Pending)狀態的訂單。參考以下查詢語句 -

SELECT order_id, customer_id, status, salesman_id, TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date FROM orders WHERE ( status = 'Canceled' OR status = 'Pending') AND customer_id = 44 ORDER BY order_date; 
SQL

執行上面查詢語句,得到以下結果 -

在本教程中,您已學習如何使用Oracle OR運算符來組合兩個或更多的布爾表達式。


免責聲明!

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



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