Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Часто условия, проверяемые в WHERE, IF и т.д., не являются простыми предикатами, а группой нескольких предикатов, каждый из которых при вычислении делает вклад в вычисление общей истинности. Утверждение может состоять из одного предиката или из нескольких предикатов, связанных логическими операциями AND или OR. Каждый из этих предикатов сам может содержать вложенные предикаты. Окончательный результат вычисление истинности утверждения получается в результате процесса, который работает по направлению от внутренних предикатов к внешним. Каждый "уровень" должен быть вычислен в порядке своего приоритета, пока не будет возможным получить окончательное значение утверждения.

В следующем наборе условий поиска проверяемое утверждение содержит два условия. Ключевое слово AND связывает два предиката, приводя к тому, что окончательное утверждение будет истинным, если оба предиката будут истинными:

SELECT * FROM EMPLOYEE

WHERE (

(HIRE_DATE > CURRENT_DATE - 366)

AND (SALARY BETWEEN 25000.00 AND 39999.99));

Строки, для которых одно утверждение истинно, а другое ложно, будут отбрасываться.

Первый предикат (HIRE_DATE > CURRENT_DATE - 366) использует выражение, состоящее из переменной и операции вычисления значения, которое будет сравниваться со значением столбца. В этом случае утверждение использует оператор- утверждение будет истинным, если значение столбца будет больше, чем значение, полученное из выражения.

Второй предикат использует другой оператор. Ключевое слово BETWEEN задает проверку "больше или равно значению в левой части и меньше или равно значению в правой части".

Круглые скобки здесь не являются обязательными, хотя для многих сложных выражений скобки должны быть использованы для задания приоритета вычислений выражений и предикатов. В ситуациях, когда проверяются серии предикатов, использование для них скобок является хотя и необязательным, но весьма полезным для документирования и отладки.

<p>Решение, что является истинным</p>

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

В нашем примере вначале проверяется (HIRE_DATE > CORRENT_DATE - 366), потому что это самый левый предикат. Если бы у него были вложенные предикаты, то сначала проверялись бы они. Ни для одного из предикатов нет проверки на NULL, но мы включили сюда тот случай, когда встречается пустое ("неизвестное") значение в проверяемых данных, что приведет к результату "ложь", поскольку проверка не может вернуть истину. Должна быть доказана истинность предикатов, чтобы они считались истинными.

Если NULL встречается в HIRE DATE, то проверка немедленно прекращается и возвращает ложь[72]. Связка AND означает: два предиката, соединенные операцией AND, не могут давать результат истина, если один из них является ложным, следовательно, нет необходимости выполнять проверку второго предиката.

Если проверяемые данные не являются NULL, ТО следующей является проверка, верно ли, что значение больше указанной константы. Если нет, проверка прекращается. Другими словами, NULL и ложь имеют один и тот же эффект, поскольку оба не являются истиной.

Рис. 21.1. Вычисление истинности

Если первый предикат истинный, похожий процесс вычисления выполняется для второго предиката. Только когда будет выполнено все это, процесс вычисления утверждения завершается.

<p>Символы, используемые в выражениях</p>

Табл. 21.1 описывает символы, которые могут появляться в выражениях SQL.

Таблица 21.1. Элементы выражений SQL

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных