在本教學中,我們來學習如何使用Oracle OR
運算子來組合兩個或更多的布林表示式。
OR
運算子是一個邏輯運算子,它組合了布林表示式,如果其中一個表示式為真(true
),則返回true
。
以下說明OR
運算子的語法:
expression_1 AND expression_2
下表顯示了OR
運算子在true
,false
和NULL
值之間的結果。
值 | TRUE | FALSE | NULL |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
我們經常在SELECT,DELETE和UPDATE語句的WHERE子句中使用OR
運算子來形成過濾資料的條件。
如果在語句中使用多個邏輯運算子,則Oracle會在評估NOT
和AND運算子之後評估OR
運算子。 但是,可以使用括號更改評估的順序。
我們將使用範例資料庫中的orders
表進行演示。表結構如下圖所示 -
以下範例查詢狀態為掛起(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;
在這個例子中,語句返回了滿足下列表示式之一的所有訂單:
status = 'Pending'
-- 或
status = 'Canceled'
執行上面查詢語句,得到以下結果 -
我們經常使用OR
運算子來組合兩個以上的布林表示式。 例如,以下語句檢索負責以下銷售員ID是60
,61
或62
的訂單:
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;
執行上面查詢語句,得到以下結果 -
可以使用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;
該查詢返回的結果與使用上面的OR
運算子返回的結果相同。
可以將OR
運算子與其他邏輯運算子(如AND和NOT
)結合起來,形成一個條件。 例如,以下查詢將返回屬於客戶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;
執行上面查詢語句,得到以下結果 -
在本教學中,您已學習如何使用Oracle OR
運算子來組合兩個或更多的布林表示式。