codecamp

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

考虑以下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; 

当执行上述查询时,它将产生以下输出。

*** 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是返回表达式的第一个非空值的语句。 如果表达式的所有参数计算结果为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) 

例子

如果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
Teradata 聚合函数
Teradata 主索引
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }