Программирование >>  Преобразование значений null 

1 ... 26 27 28 [ 29 ] 30 31 32 ... 219


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 (если таковые имеются):

select

d.deptno,d.dname,e.ename

from

dept d left outer join emp e

(d.deptno =

e.deptno)

DEPTNO

DNAME

ENAME

RESEARCH

SMITH

SALES

ALLEN

SALES

WARD

RESEARCH

JONES

SALES

MARTIN

SALES

BLAKE

ACCOUNTING

CLARK

RESEARCH

SCOTT

ACCOUNTING

KING

SALES

TURNER

RESEARCH

ADAMS

SALES

JAMES

RESEARCH

FORD

ACCOUNTING

MILLER

OPERATIONS

Следующий запрос возвращает строки таблицы EMP и все совпадающие строки таблицы DEPT (если таковые имеются):



select

d.deptno,d.dname,e.ename

from

dept d right outer join emp e

(d.deptno =

e.deptno)

DEPTNO

DNAME

ENAME

ACCOUNTING

MILLER

ACCOUNTING

KING

ACCOUNTING

CLARK

RESEARCH

FORD

RESEARCH

ADAMS

RESEARCH

SCOTT

RESEARCH

JONES

RESEARCH

SMITH

SALES

JAMES

SALES

TURNER

SALES

BLAKE

SALES

MARTIN

SALES

WARD

SALES

ALLEN

YODA

Для получения окончательного результирующего множества соединяем результаты этих двух запросов.

Значения 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



1 ... 26 27 28 [ 29 ] 30 31 32 ... 219

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика