Teradata-CASE och COALESCE
detta kapitel förklarar Teradatas fall och sammanför funktioner.
FALLUTTRYCK
FALLUTTRYCK utvärderar varje rad mot ett villkor eller när-klausul och returnerar resultatet av den första matchen. Om det inte finns några matchningar returneras resultatet från annan del av.
Syntax
Följande är syntaxen för FALLUTTRYCKET.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
exempel
Tänk på följande anställd tabell.
Anställdeno | Förnamn | Efternamn | Förenaddatum | Avdelningno | Födelsedatum |
---|---|---|---|---|---|
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 |
följande exempel utvärderar kolumnen Institutionno och returnerar värdet 1 om avdelningsnumret är 1; returnerar 2 om avdelningsnumret är 3; annars returnerar värdet som ogiltig avdelning.
SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
när ovanstående fråga körs producerar den följande utdata.
*** 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
ovanstående FALLUTTRYCK kan också skrivas i följande form som ger samma resultat som ovan.
SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
COALESCE
COALESCE är ett uttalande som returnerar det första icke-null-värdet av uttrycket. Den returnerar NULL om alla argument i uttrycket utvärderas till NULL. Följande är syntaxen.
Syntax
COALESCE(expression 1, expression 2, ....)
exempel
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
nullif
nullif uttalande returnerar NULL om argumenten är lika.
Syntax
följande är syntaxen för nullif-uttalandet.
NULLIF(expression 1, expression 2)
exempel
följande exempel returnerar NULL om Avdelningenno är lika med 3. Annars returnerar den Avdelningeninget värde.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
ovanstående fråga returnerar följande poster. Du kan se att anställd 105 har avdelning nr. som 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