|
Программирование >> Построение запросов sql
FROM Abonent;. Результат выполнения запроса представлен на рис. 3.44.
Рис. 3.44. Результат выполнения запроса при использовании NULLIF абонента, который имел номер телефона Как следует из результата, у 556893, теперь номер неизвестен. С помощью функции NULLIF можно некоторые или все значения заданном столбце поменять на NULL, например, следующим образом: SELECT AccountCD, Fio, NULLIF (Phone, Phone) FROM Abonent;. Результат выполнения запроса представлен на рис. 3.45.
Рис. 3.45. Результат выполнения запроса на замену всего столбца на NULL 3.2.3.5.4. Функция IIF Две предыдущие рассмотренные функции соответствовали стандарту SQL. СУБД Firebird предоставляет возможность использования также функции IIF, которая является расширением языка и не описана в стандарте SQL. Функция имеет следующий синтаксис: IIF (<условие поиска>, <выражение1>, <выражение2>) и эквивалентна следующей конструкции операции CASE: CASE WHEN <условие поиска> THEN <выражение1> ELSE <выражение2> END. Данная конструкция возвращает значение <выражение1>, если <условие поиска> истинно, и значение <выражение2> в противном случае. Например, необходимо вывести информацию о типах неисправностей, не детализируя неисправности газовой плиты. Запрос будет выглядеть следующим образом: SELECT FailureCD, IIF(FailureNM Like %плит%, Неисправность плиты, FailureNM) AS Failure type FROM Disrepair;. Результат выполнения запроса представлен на рис. 3.46.
Рис. 3.46. Результат выполнения запроса при использовании IIF 3.2.3.5.5. Функция DECODE Функция DECODE является сокращенной формой простой операции CASE и имеет следующий формат: DECODE (<выражение>, <значение1>, результат1 [ , <значение2>, результат2 ... ] [,<результат по умолчанию>]. Эта функция последовательно сравнивает значение выражения, заданного первым аргументом, с аргументами <значение1>, <значение2> и т.д. Если сравнение оказывается истинным, возвращается соответственно результат1 или результат2 и т. д. Если значение выражения не совпало ни с одним из значений из списка, то возвращается <результат по умолчанию> (аналогичен результату, задаваемому после фразы ELSE в операции CASE). Типы значения исходного выражения и его декодированного значения (результат1 , результат2 и т.д.) могут не совпадать. Например, с помощью следующего запроса можно вывести первые 5 строк из таблицы ремонтных заявок, указав, погашены заявки или нет: SELECT FIRST 5 RequestCD, DECODE (Executed, 0, Заявка не погашена, 1, Заявка погашена, Неизвестно) FROM Request;. Результат выполнения запроса представлен на рис. 3.47.
Рис. 3.47. Результат работы функции DECODE 3.2.4. Сортировка результатов запроса Строки ТРЗ, как и строки таблиц БД, не имеют определенного порядка. Включив в запрос SELECT предложение ORDER BY, можно отсортировать результаты запроса. Предложение ORDER BY состоит из ключевого слова ORDER BY, за которым следует список элементов сортировки, каждый из которых имеет следующий синтаксис: <элемент сортировки> :: ={{[<таблица>.] столбец порядковый номер столбца псевдоним столбца <выражение>} [ASC[ENDING] DESC[ENDING]] NULLS FIRST NULLS LAST]} . Ключевое слово DESC означает сортировку по убыванию. Если указать необязательное и используемое по умолчанию ключевое слово ASC, то сортировка будет произведена по возрастанию. Например, для вывода начислений абонентам за декабрь 2000 года упорядоченных по убыванию значений, следует использовать следующий запрос: SELECT NachislFactCD, AccountCd, NachislSum FROM NachislSumma WHERE NachislMonth=12 AND NachislYear=2000 ORDER BY NachislSum DESC;. Результат выполнения запроса представлен на рис. 3.48.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |