В этой главе описываются функции CASE и COALESCE Teradata.
CASE Expression
Выражение CASE сравнивает каждую строку с условием или предложением WHEN и возвращает результат первого совпадения. Если совпадений нет, возвращается результат из ELSE.
Синтаксис
Ниже приводится синтаксис выражения CASE.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
пример
Рассмотрим следующую таблицу сотрудников.
Сотрудник № | Имя | Фамилия | JoinedDate | DepartmentNo | Дата рождения |
---|---|---|---|---|---|
101 | Майк | Джеймс | 3/27/2005 | 1 | 1/5/1980 |
102 | Роберт | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Питер | Павел | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Стюарт | 2/1/2008 | 2 | 11/6/1984 |
105 | Роберт | Джеймс | 1/4/2008 | 3 | 12/1/1984 |
В следующем примере оценивается столбец DepartmentNo и возвращается значение 1, если номер отдела равен 1; возвращает 2, если номер отдела равен 3; в противном случае он возвращает значение как неверный отдел.
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
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)
пример
В следующем примере возвращается NULL, если значение DepartmentNo равно 3. В противном случае возвращается значение DepartmentNo.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
Приведенный выше запрос возвращает следующие записи. Вы можете видеть, что у сотрудника 105 есть отдел №. как NULL.