|
Программирование >> Преобразование значений null
6 from dept d left outer join emp e 7 on (d.deptno=e.deptno) Oracle При работе с Oracle 9i Database или более поздними версиями можно использовать любое из предыдущих решений. Как альтернатива применяется собственный синтаксис Oracle для внешнего объединения. Этот вариант является единственно возможным для пользователей Oracle 8i Database и более ранних версий: 1 select d.deptno,d.dname,e.ename 2 from dept d, emp e 3 where d.deptno = e.deptno(+) 4 union 5 select d.deptno,d.dname,e.ename 6 from dept d, emp e 7 where d.deptno(+) = e.deptno Обсуждение Полное внешнее объединение - это просто сочетание внешних объединений обеих таблиц. Чтобы понять принцип полного внешнего объединения, просто выполните каждое внешнее объединение по отдельности и затем произведите слияние результатов. Следующий запрос возвращает строки таблицы DEPT и все совпадающие строки таблицы EMP (если таковые имеются):
Следующий запрос возвращает строки таблицы EMP и все совпадающие строки таблицы DEPT (если таковые имеются):
Для получения окончательного результирующего множества соединяем результаты этих двух запросов. Значения NULL в операциях и сравнениях Задача Значение NULL никогда не бывает равным или не равным ни одному значению, даже самому себе, однако стоит задача проводить вычисления над данными столбца, который может содержать NULL значения. Например, требуется найти в таблице EMP всех служащих, сумма комиссионных (COMM) которых меньше, чем у служащего WARD. В результирующее множество должны быть включены и служащие, для которых значение комиссионных не определено (NULL). Решение С помощью такой функции, как COALESCE, преобразуйте значение NULL в действительное значение, которое может использоваться в обычных вычислениях: 1 select ename,comm 2 from emp 3 where coalesce(comm,0) < ( select comm 4 from emp 5 where ename = WARD ) Обсуждение Функция COALESCE возвращает из списка переданных в нее значений первое не являющееся NULL значение. Когда встречается значение NULL, оно замещается нулем, который потом сравнивается со значением комиссионных служащего WARD. Это можно увидеть, поместив функцию COALESCE в список SELECT: select ename,comm,coalesce(comm,0) from emp where coalesce(comm,0) < ( select comm from emp where ename = WARD ) ENAME COMM COALESCE(COMM,0) SMITH ALLEN JONES BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |