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

1 ... 13 14 15 [ 16 ] 17 18 19 ... 219


5 from emp

6 ) x

7 order by is null,comm desc

ENAME

COMM

SMITH

JONES

2975

CLARK

2450

BLAKE

2850

SCOTT

3000

KING

5000

JAMES

MILLER

1300

FORD

3000

ADAMS

1100

MARTIN

1250

1400

WARD

1250

ALLEN

1600

TURNER

1500

Oracle

Пользователи OracleSi Database и более ранних версий могут применять решения для других платформ. Пользователям Oracle 9i Database и более поздних версий доступны расширения NULLS FIRST и NULLS LAST оператора ORDER BY, позволяющие располагать строки с неопределенными значениями (NULL) в начале или конце итогового списка независимо от порядка сортировки строк с определенными значениями:

/* ОПРЕДЕЛЕННЫЕ ЗНАЧЕНИЯ COMM СОРТИРУЮТСЯ ПО ВОЗРАСТАНИЮ,

ВСЕ СТРОКИ С НЕОПРЕДЕЛЕННЫМИ ЗНАЧЕНИЯМИ РАСПОЛАГАЮТСЯ ПОСЛЕ НИХ */

1 select ename,sal,comm

2 from emp

3 order by comm nulls last

ENAME

COMM

TURNER

1500

ALLEN

1600

WARD

1250

MARTIN

1250

1400

SMITH

JONES

2975

JAMES

MILLER

1300

FORD

3000

ADAMS

1100

BLAKE

2850

CLARK

2450

SCOTT

3000

KING

5000



/* ОПРЕДЕЛЕННЫЕ ЗНАЧЕНИЯ COMM СОРТИРУЮТСЯ ПО УБЫВАНИЮ,

ВСЕ СТРОКИ С НЕОПРЕДЕЛЕННЫМИ ЗНАЧЕНИЯМИ РАСПОЛАГАЮТСЯ ПОСЛЕ НИХ */

1 select ename,sal,comm

2 from emp

3 order by comm desc nulls last

ENAME

COMM

MARTIN

1250

1400

WARD

1250

ALLEN

1600

TURNER

1500

SMITH

JONES

2975

JAMES

MILLER

1300

FORD

3000

ADAMS

1100

BLAKE

2850

CLARK

2450

SCOTT

3000

KING

5000

/* ОПРЕДЕЛЕННЫЕ ЗНАЧЕНИЯ COMM СОРТИРУЮТСЯ ПО ВОЗРАСТАНИЮ,

ВСЕ СТРОКИ С НЕОПРЕДЕЛЕННЫМИ ЗНАЧЕНИЯМИ РАСПОЛАГАЮТСЯ ПЕРЕД НИМИ */

1 select ename,sal,comm

2 from emp

3 order by comm nulls first

ENAME

COMM

SMITH

JONES

2975

CLARK

2450

BLAKE

2850

SCOTT

3000

KING

5000

JAMES

MILLER

1300

FORD

3000

ADAMS

1100

TURNER

1500

ALLEN

1600

WARD

1250

MARTIN

1250

1400

/* ОПРЕДЕЛЕННЫЕ ЗНАЧЕНИЯ COMM СОРТИРУЮТСЯ ПО УБЫВАНИЮ,

ВСЕ СТРОКИ С НЕОПРЕДЕЛЕННЫМИ ЗНАЧЕНИЯМИ РАСПОЛАГАЮТСЯ ПЕРЕД НИМИ */



1 select ename,sal,comm

2 from emp

3 order by comm desc nulls first

ENAME

COMM

SMITH

JONES

2975

CLARK

2450

BLAKE

2850

SCOTT

3000

KING

5000

JAMES

MILLER

1300

FORD

3000

ADAMS

1100

MARTIN

1250

1400

WARD

1250

ALLEN

1600

TURNER

1500

Обсуждение

Если ваша СУБД не предоставляет средства для выноса значений NULL в начало или конец результирующего списка без изменения определенных (не-NULL) значений столбца (как это делает Oracle), то необходимо использовать вспомогательный столбец.

На момент написания данной книги пользователи DB2 могут использовать NULLS FIRST и NULLS LAST в подоператоре ORDER BY оператора OVER в оконных функциях, но не в операторе ORDER BY для всего результирующего множества.

Назначение этого дополнительного столбца (только в запросе, не в таблице) состоит в идентификации значений NULL, обеспечивающей возможность их выноса в начало или конец выводимого списка. Следующий запрос возвращает результирующее множество для вложенного запроса X (решение не Oracle):

select ename,sal,comm,


case when

comm is

null then

from

ENAME

COMM

IS NULL

SMITH

ALLEN

1600

WARD

1250

JONES

2975

MARTIN

1250

1400

BLAKE

2850

CLARK

2450



1 ... 13 14 15 [ 16 ] 17 18 19 ... 219

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