Teradata - CASE 和 COALESCE 函式



本章解釋 Teradata 的 CASE 和 COALESCE 函式。

CASE 表示式

CASE 表示式根據條件或 WHEN 子句評估每一行,並返回第一個匹配的結果。如果沒有匹配項,則返回 ELSE 部分的結果。

語法

以下是 CASE 表示式的語法。

CASE <expression> 
WHEN <expression> THEN result-1 
WHEN <expression> THEN result-2 

ELSE  
   Result-n 
END

示例

考慮以下員工表。

員工編號 名字 姓氏 入職日期 部門編號 出生日期
101 Mike James 3/27/2005 1 1/5/1980
102 Robert Williams 4/25/2007 2 3/5/1983
103 Peter Paul 3/21/2007 2 4/1/1983
104 Alex Stuart 2/1/2008 2 11/6/1984
105 Robert James 1/4/2008 3 12/1/1984

以下示例評估 DepartmentNo 列,如果部門編號為 1,則返回 1;如果部門編號為 3,則返回 2;否則返回“無效部門”。

SELECT 
   EmployeeNo, 
CASE DepartmentNo 
   WHEN 1 THEN 'Admin' 
   WHEN 2 THEN 'IT' 
ELSE 'Invalid Dept'
   END AS Department 
FROM Employee; 

執行上述查詢後,將產生以下輸出。

*** Query completed. 5 rows found. 2 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo    Department 
-----------   ------------ 
   101         Admin 
   104         IT 
   102         IT 
   105         Invalid Dept 
   103         IT

上述 CASE 表示式也可以寫成以下形式,這將產生與上述相同的輸出。

SELECT 
   EmployeeNo, 
CASE  
   WHEN DepartmentNo = 1 THEN 'Admin' 
   WHEN  DepartmentNo = 2 THEN 'IT' 
ELSE 'Invalid Dept' 
   END AS Department  
FROM Employee;

COALESCE 函式

COALESCE 是一個語句,它返回表示式中第一個非空值。如果表示式的所有引數都計算為 NULL,則返回 NULL。以下是語法。

語法

COALESCE(expression 1, expression 2, ....) 

示例

SELECT 
   EmployeeNo, 
   COALESCE(dept_no, 'Department not found') 
FROM  
   employee;

NULLIF 函式

NULLIF 語句如果引數相等則返回 NULL。

語法

以下是 NULLIF 語句的語法。

NULLIF(expression 1, expression 2) 

示例

以下示例如果 DepartmentNo 等於 3 則返回 NULL,否則返回 DepartmentNo 值。

SELECT 
   EmployeeNo,  
   NULLIF(DepartmentNo,3) AS department 
FROM Employee;

上述查詢返回以下記錄。您可以看到員工 105 的部門編號為 NULL。

*** Query completed. 5 rows found. 2 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo      department 
-----------  ------------------ 
    101              1 
    104              2 
    102              2 
    105              ? 
    103              2
廣告
© . All rights reserved.