語句文法
| 代碼如下 |
複製代碼 |
CASE [ expression ] WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 ... WHEN condition_n THEN result_n ELSE result END |
expression 可選的。它的價值,你比較的條件清單。 (即:condition_1,condition_2,... condition_n)
condition_1到condition_n都必須是相同的資料類型。條件評估中列出的順序。一個條件是一旦發現是真實的,case語句將返回的結果和不評價任何進一步的條件。
result_1到result_n都必須是相同的資料類型。這是返回的值一個條件是,一旦發現是真的。
注意:
如果沒有條件為真,那麼case語句將返回在ELSE子句裡的值。
如果省略了ELSE子句和任何條件發現是真的,那麼case語句將返回NULL。
最多可以有255在case語句比較。時,每個...條款被認為是2比較。
Applies To:
Oracle 9i, Oracle 10g, Oracle 11g
執行個體
你可以使用case語句在SQL語句如下:(包括運算式子句)
| 代碼如下 |
複製代碼 |
select table_name, CASE owner WHEN 'SYS' THEN 'The owner is SYS' WHEN 'SYSTEM' THEN 'The owner is SYSTEM' ELSE 'The owner is another value' END from all_tables; |
或者你可以寫SQL語句,使用這樣的情況下聲明:(省略了運算式子句)
| 代碼如下 |
複製代碼 |
select table_name, CASE WHEN owner='SYS' THEN 'The owner is SYS' WHEN owner='SYSTEM' THEN 'The owner is SYSTEM' ELSE 'The owner is another value' END from all_tables; |
上述兩個案例語句以下的IF - THEN- ELSE語句是等價的:
| 代碼如下 |
複製代碼 |
IF owner = 'SYS' THEN result := 'The owner is SYS'; ELSIF owner = 'SYSTEM' THEN result := 'The owner is SYSTEM''; ELSE result := 'The owner is another value'; END IF; |
case語句會比較每一位業主的價值,一個接一個。
需要注意的一點是,在case語句的else子句是可選的的。你可以省略。讓我們看看上面的SQL語句與ELSE子句省略。
您的SQL語句如下所示:
| 代碼如下 |
複製代碼 |
select table_name, CASE owner WHEN 'SYS' THEN 'The owner is SYS' WHEN 'SYSTEM' THEN 'The owner is SYSTEM' END from all_tables; |
執行個體
下面就是一個例子,示範了如何使用case語句來比較不同條件下:
| 代碼如下 |
複製代碼 |
select CASE WHEN a < b THEN 'hello' WHEN d < e THEN 'goodbye' END from suppliers; |