Teradata CASE和COALESCE

2018-01-11 14:06 更新

本章介紹Teradata的CASE和COALESCE函數(shù)。

CASE表達式

CASE表達式根據(jù)條件或WHEN子句計算每一行,并返回第一個匹配的結(jié)果。 如果沒有匹配,則返回ELSE部分的結(jié)果。

語法

以下是CASE表達式的語法。

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

ELSE  
   Result-n 
END

考慮以下Employee表。

員工編號名字入職日期部門生日
101MikeJames3/27/200511/5/1980
102RobertWilliams4/25/200723/5/1983
103PeterPaul3/21/200724/1/1983
104AlexStuart2/1/2008211/6/1984
105RobertJames1/4/2008312/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; 

當執(zhí)行上述查詢時,它將產(chǎn)生以下輸出。

*** 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表達式也可以以下面的形式寫出,這將產(chǎn)生與上面相同的結(jié)果。

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

合并

COALESCE是返回表達式的第一個非空值的語句。 如果表達式的所有參數(shù)計算結(jié)果為NULL,則返回NULL。 以下是語法。

語法

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

例子

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

NULLIF

如果參數(shù)相等,NULLIF語句返回NULL。

例子

以下是NULLIF語句的語法。

NULLIF(expression 1, expression 2) 

例子

如果Department等于3,下面的示例返回NULL。否則,它返回Department No值。

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
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號