|
Программирование >> Преобразование значений null
Обсуждение Оператор ORDER BY позволяет упорядочивать строки результирующего множества. В разделе Решение строки сортируются по столбцу SAL в возрастающем порядке. По умолчанию ORDER BY осуществляет сортировку по возрастанию, поэтому оператор ASC является необязательным. Чтобы обеспечить сортировку по убыванию, используется оператор DESC: select ename,job,sal from emp where deptno = 10 order by sal desc ENAME JOB SAL KING PRESIDENT 5000 CLARK MANAGER 2450 MILLER CLERK 1300 Имя столбца, по которому должна проводиться сортировка, задавать необязательно. Можно указать порядковый номер столбца. Нумерация столбцов в списке оператора SELECT начинается с 1 и осуществляется в направлении слева направо. Например: select ename,job,sal from emp where deptno = 10 order by 3 desc ENAME JOB SAL KING PRESIDENT 5000 CLARK MANAGER 2450 MILLER CLERK 1300 Число 3 в операторе ORDER BY данного примера соответствует третьему столбцу списка оператора SELECT, т. е. столбцу SAL. Сортировка по нескольким полям Задача Требуется сортировать строки таблицы EMP сначала по столбцу DEPTNO по возрастанию, а затем по заработным платам по убыванию. Необходимо получить следующее результирующее множество:
Решение В операторе ORDER BY через запятую перечислите столбцы, по которым должна проводиться сортировка: 1 select empno,deptno,sal,ename,job 2 from emp 3 order by deptno, sal desc Обсуждение Старшинство столбцов, по которым осуществляется сортировка, в операторе ORDER BY определяется слева направо. Если столбец задается его порядковым номером в списке оператора SELECT, то это число не должно превышать количества элементов в списке SELECT. Можно проводить сортировку по столбцу, не входящему в список SELECT, но для этого необходимо явно указать его имя. Тем не менее при использовании в запросе операторов GROUP BY или DISTINCT сортировка может осуществляться только по столбцам из списка оператора SELECT. Сортировка по подстрокам Задача Требуется сортировать результаты запроса по частям строки. Например, имена и должности служащих, возвращенные из таблицы EMP, должны быть упорядочены по последним двум символам поля должности. Необходимо получить следующее результирующее множество:
SMITH 20 ALLEN 30 MARTIN SALESMAN WARD SALESMAN TURNER SALESMAN SCOTT ANALYST FORD ANALYST Решение DB2, MySQL, Oracle и PostgreSQL Используйте в операторе ORDER BY функцию SUBSTR: select ename,job from emp order by substr(job,length(job)-2) SQL Server Используйте в операторе ORDER BY функцию SUBSTRING: select ename,job from emp order by substring(job,len(job)-2,2) Обсуждение Используя функции работы с подстроками конкретной СУБД, можно без труда проводить сортировку по любой части строки. Чтобы сортировать по последним двум символам строки, находим конец строки (что соответствует ее длине) и вычитаем 2. Таким образом, начальная позиция будет располагаться на предпоследнем символе строки. Теперь выбираем все символы после этой позиции. SQL Server требует задания для SUBSTRING третьего параметра, определяющего количество выбираемых символов. В данном примере подходит любое число, большее или равное 2. Сортировка смешанных буквенно-цифровых данных Задача Требуется сортировать смешанные буквенно-цифровые данные по числовой или символьной части. Рассмотрим следующее представление: create view V as select ename deptno as data from emp select * from V DATA
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |