📅  最后修改于: 2021-01-11 11:24:40             🧑  作者: Mango
CASE和COALESCE这两个函数在Teradata中都用于不同的目的。两种功能具有不同的功能。
Teradata CASE语句提供了灵活性,可以根据表达式中指定的条件获取列的备用值。
CASE表达式根据条件或WHEN子句评估每一行,如果没有匹配项,则返回第一个匹配项的结果,然后从返回的ELSE部分返回结果。
句法
以下是CASE表达式的语法。
CASE
WHEN THEN result-1
WHEN THEN result-2
ELSE
Result-n
END
例
考虑下表中的以下Employee记录。
Employee_Id | Age | Salary | Marital_Status |
---|---|---|---|
202001 | 22 | 20,000 | 1 |
202002 | 25 | 25,000 | 1 |
202003 | 30 | 35,000 | 2 |
202004 | 26 | 32,000 | 2 |
202005 | 32 | 40,000 | 2 |
在上面的示例中,我们评估了Marital_Status列。如果婚姻状况为“单身”,则返回1;如果婚姻状况为已婚,则返回2。否则,它将返回“不确定”值。
现在,我们将在Marital_Status列上应用CASE语句,如下所示:
SELECT
Employee_Id,
Age,
Salary,
CASE WHEN Marital_Status= 1 THEN 'Single'
WHEN Marital_Status= 2 THEN 'Married'
ELSE 'Not Sure'
END
执行完以上代码后,将产生以下输出。
上面的CASE表达式也可以按以下方式编写,将产生与上面相同的结果。
SELECT
Employee_Id,
Age,
Salary,
CASE Marital_Status When 1 THEN 'Single'
WHEN 2 THEN 'Married'
ELSE 'Not Sure'
END AS Marital_Status
FROM Employee;
Teradata COALESCE用于NULL处理。 COALESCE是一个返回表达式的第一个非空值的语句。如果表达式的所有参数求值为NULL,则返回NULL。以下是语法。
句法
这是COALESCE函数的基本语法:
COALESCE(expression 1, expression 2, ....... expression n)
例
考虑下面的学生表。
现在,我们可以使用COALESCE函数优先选择哪个电话号码,如下所示:
SELECT
Roll_No,
First_Name,
Last_Name,
COALESCE(Landline_no, Mobile_no, 'phone# not available') AS phone_no
FROM Student;
在上面的示例中,我们将首先搜索Landline_no。如果为NULL,它将分别搜索Mobile_no。如果两个数字均为NULL,则返回不可用。而且,如果没有一个参数返回值(不是NULL值),它将从这些列返回默认值。
当我们执行以上查询时,它将生成以下输出。
如果参数相等,则NULLIF语句返回NULL。
句法
以下是NULLIF语句的语法。
NULLIF(expression 1, expression 2)
例
下面的示例如果Mobile_No等于0,则返回NULL。否则,返回Mobile_No值。
SELECT
Roll_No,
NULLIF(Mobile_no, 0) AS Mobile
FROM Student;
上面的查询返回以下记录。我们可以看到Roll_No 101和104的Mobile为NULL。