- Teradata 教程
- Teradata - 主页
- Teradata 基础知识
- Teradata - 简介
- Teradata - 安装
- Teradata - 架构
- Teradata - 关系概念
- Teradata - 数据类型
- Teradata - 表
- Teradata - 数据操作
- Teradata - SELECT 语句
- 逻辑和条件运算符
- Teradata - SET 运算符
- Teradata - 字符串操作
- Teradata - 日期/时间函数
- Teradata - 内置函数
- Teradata - 聚合函数
- Teradata - 案例与合并
- Teradata - 主索引
- Teradata - 加入
- Teradata - 子查询
- Teradata 高级版
- Teradata - 表类型
- Teradata - 空间概念
- Teradata - 二级索引
- Teradata - 统计
- Teradata - 压缩
- Teradata - 解释
- Teradata - 哈希算法
- Teradata - 连接索引
- Teradata - 视图
- Teradata - 宏
- Teradata - 存储过程
- Teradata - 加入策略
- Teradata - 分区主索引
- Teradata - OLAP 函数
- Teradata - 数据保护
- Teradata - 用户管理
- Teradata - 性能调优
- Teradata - 快速加载
- Teradata - 多负载
- Teradata - 快速导出
- Teradata-BTEQ
- Teradata 有用资源
- Teradata - 问题与解答
- Teradata - 快速指南
- Teradata - 有用的资源
- Teradata - 讨论
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 表。
员工号 | 名 | 姓 | 加入日期 | 部门编号 | 出生日期 |
---|---|---|---|---|---|
101 | 麦克风 | 詹姆士 | 2005年3月27日 | 1 | 1980年1月5日 |
102 | 罗伯特 | 威廉斯 | 2007年4月25日 | 2 | 1983年3月5日 |
103 | 彼得 | 保罗 | 2007年3月21日 | 2 | 1983年4月1日 |
104 | 亚历克斯 | 斯图尔特 | 2008年2月1日 | 2 | 1984年11月6日 |
105 | 罗伯特 | 詹姆士 | 2008年1月4日 | 3 | 1984年12月1日 |
以下示例评估 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)
例子
如果 DepartmentNo 等于 3,以下示例将返回 NULL。否则,返回 DepartmentNo 值。
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
上述查询返回以下记录。您可以看到员工 105 的部门号为 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