運算式 | 說明 |
AND | 如果兩個元件條件均為真,則傳回 TRUE |
OR | 如果其中一個元件條件為真,則傳回 TRUE |
NOT | 如果下列條件為偽,則傳回 TRUE |
AND 運算式
在範例中,兩個條件都必須為真,才會選取記錄。所以,只會選取職稱中有 ‘MAN’ 字串,而且薪資高於 $10,000 以上的員工。
SELECT employee_id, last_name, job_id, salary FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%' ;
|
所有字元搜尋都會區分大小寫。如果 ‘MAN’ 不是大寫,就不會傳回資料列。字元字串可以用引號括起來。下表顯示以 AND 來結合兩個表示式的結果:
AND | TRUE | FALSE | NULL |
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
OR 運算式
在範例中,兩個條件之一必須為真,才會選取記錄。所以,會選取工作 ID 中包含 ‘MAN’ 字串或薪資大於等於 $10,000 的員工。
在範例中,兩個條件之一必須為真,才會選取記錄。所以,會選取工作 ID 中包含 ‘MAN’ 字串或薪資大於等於 $10,000 的員工。
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000 OR job_id LIKE '%MAN%' ;
|
下列表格顯示以 OR 來結合兩個表示式的結果:
OR | TRUE | FALSE | NULL |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
NOT 運算式
範例顯示工作 ID 不是 IT_PROG、ST_CLERK 或 SA_REP 的所有員工,其姓氏與工作 ID。
範例顯示工作 ID 不是 IT_PROG、ST_CLERK 或 SA_REP 的所有員工,其姓氏與工作 ID。
SELECT last_name, job_id FROM employees
WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ; |
下列表格顯示將 NOT 運算式套用到條件的結果:
NOT | TRUE | FALSE | NULL |
FALSE | TRUE | NULL |
注意:NOT 運算子也可以與其他 SQL 運算子一起使用,例如 BETWEEN、LIKE、NULL。
... WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP')
... WHERE salary NOT BETWEEN 10000 AND 15000
... WHERE last_name NOT LIKE '%A%'
... WHERE commission_pct IS NOT NULL |
優先順序的規則
優先順序的規則決定評估和計算表示式的順序。此表格列出優先順序的預設順序。您可以在希望先計算的表示式外加上括弧,以更改預設的順序。運算式 | 意義 |
1 | 數學運算表示式 |
2 | 串接表示式 |
3 | 比較條件 |
4 | IS [NOT] NULL, LIKE, [NOT] IN |
5 | [NOT] BETWEEN |
6 | 不等於 |
7 | NOT 邏輯條件 |
8 | AND 邏輯條件 |
9 | OR 邏輯條件 |
AND 運算子優先順序的範例
SELECT last_name, job_id, salary FROM employees
WHERE job_id = 'SA_REP'
OR job_id = 'AD_PRES'
AND salary > 15000;
|
在以上範例中有兩個條件:
- 第一個條件是工作 ID 為 AD_PRES 且薪資高於 $15,000。
- 第二個條件是工作 ID 為 SA_REP。
使用括弧的範例
SELECT last_name, job_id, salary FROM employees
WHERE (job_id = 'SA_REP'
OR job_id = 'AD_PRES')
AND salary > 15000;
|
在以上範例中有兩個條件:
第一個條件是工作 ID 為 AD_PRES 或 SA_REP。
第二個條件是薪資大於 $15,000。
所以,SELECT 敘述句應解讀如下: “如果員工是總裁或業務代表,且此名員工薪資大於 $15,000,則選擇資料列。”第一個條件是工作 ID 為 AD_PRES 或 SA_REP。
第二個條件是薪資大於 $15,000。
沒有留言:
張貼留言