Программирование >>  Построение запросов sql 

1 ... 29 30 31 [ 32 ] 33 34 35 ... 101


FROM Abonent;.

Результат выполнения запроса представлен на рис. 3.44.

ACCOUNTCD

CASE

005488

АКСЕНОВ С.А.

<null>

115705

МИЩЕНКО Е.В.

769975

015527

КОНЮХОВ В.С.

761699

443690

ТУЛУПОВА М.И.

214833

136159

СВИРИНА З.А.

350003

443069

СТАРОДУБЦЕВ Е.В.

683014

136160

ШМАКОВ С.В.

982222

126112

МАРКОВА В.П.

683301

136169

ДЕНИСОВА Е.К.

680305

080613

ЛУКАТИНА РМ

254417

080047

ШУБИНА Т.П.

257842

080270

ТИМОШКИНА Н.Г.

321002

Рис. 3.44. Результат выполнения запроса при использовании NULLIF

абонента, который имел номер телефона

Как следует из результата, у 556893, теперь номер неизвестен.

С помощью функции NULLIF можно некоторые или все значения заданном столбце поменять на NULL, например, следующим образом:

SELECT AccountCD, Fio, NULLIF (Phone, Phone) FROM Abonent;.

Результат выполнения запроса представлен на рис. 3.45.

ACCOUNTCD

CASE

005488

АКСЕНОВ С.А.

<null>

115705

МИЩЕНКО Е.В.

<null>

015527

КОНЮХОВ В.С.

<null>

443690

ТУЛУПОВА М.И.

<null>

136159

СВИРИНА З.А.

<null>

443069

СТАРОДУБЦЕВ Е.В.

<null>

136160

ШМАКОВ С.В.

<null>

126112

МАРКОВА В.П.

<null>

136169

ДЕНИСОВА Е.К.

<null>

080613

ЛУКАТИНА РМ

<null>

080047

ШУБИНА Т.П.

<null>

080270

ТИМОШКИНА Н.Г.

<null>

Рис. 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.

FAILURECD

FAILURE TYPE

Засорилась водогрейная колонка

Не горит АГВ

Течет из водогрейной колонки

Неисправна печная горелка

Неисправен газовый счетчик

Неисправность плиты

Неисправность плиты

Неисправность плиты

Неизвестна

Рис. 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.

REQUESTCD

CASE

Заявка погашена

Заявка погашена

Заявка не погашена

Заявка не погашена

Заявка погашена

Рис. 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.



1 ... 29 30 31 [ 32 ] 33 34 35 ... 101

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