OR是Oracle中的邏輯運算符,本教程,將來學習如何使用OR運算符來組合兩個或更多的布爾表達式。
OR運算符組合了布爾表達式,如果其中一個表達式為真(true),則返回true。
以下是OR運算符的語法:
expression_1 OR expression_2
下表顯示了OR運算符在true,false和NULL值之間的結(jié)果。
值 | TRUE | FALSE | NULL |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
我們經(jīng)常在SELECT,DELETE和UPDATE語句的WHERE子句中使用OR運算符來形成過濾數(shù)據(jù)的條件。
如果在語句中使用多個邏輯運算符,則Oracle會在評估NOT和AND運算符之后評估OR運算符。 但是,可以使用括號更改評估的順序。
我們將使用以下的orders表進行演示:
以下示例查找狀態(tài)為掛起(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'
執(zhí)行上面的代碼可以得到以下結(jié)果:
我們經(jīng)常使用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;
執(zhí)行上面的代碼可以得到以下結(jié)果:
可以使用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;
該查詢返回的結(jié)果與使用上面的OR運算符返回的結(jié)果相同。
可以將OR運算符與其他邏輯運算符(如AND和NOT)結(jié)合起來,形成一個條件。 例如,以下查詢將返回屬于客戶ID為44并且已取消(Canceled)或掛起(Pending)狀態(tài)的訂單。參考以下查詢語句:
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;
執(zhí)行上面的代碼可以得到以下結(jié)果:
更多建議: