Рассмотренные в предыдущих пунктах условия поиска являются простыми.
С помощью правил логики эти простые условия можно объединять в более
сложные.
СУБД Firebirdпредоставляет три вида логических операций [18]: - NOT задает отрицание условия поиска, к которому применяется, и имеет наивысший приоритет. Используется следующий синтаксис:
NOT <условие_поиска>;
- AND создает сложный предикат, объединяя два или более условий поиска,каждое из которых должно быть истинным, чтобы был истинным и весь предикат. Данная операция является следующей по приоритету послеNOT. Используется следующий синтаксис:
<условие_поиска1> AND <условие_поиска2> …;
- OR создает сложный предикат, объединяя два или более условий поиска, из которых хотя бы одно должно быть истинным, чтобы был истинным и весь предикат. Является последней по приоритету из трех логических операций и имеет следующий синтаксис:
<условие_поиска1> OR <условие_поиска2> …. Вычисления логических значений в составных условиях поиска задаются таблицей истинности (см. табл. 3.1).
Таблица 3.1. Логические результаты условий поиска AND и OR
|
У1 (условие_поиска1) |
У2 (условие_поиска2) |
У1 AND У2 |
У1 OR У2 |
|
TRUE |
TRUE |
TRUE |
TRUE |
|
TRUE (FALSE) |
FALSE (TRUE) |
FALSE |
TRUE |
|
TRUE (NULL) |
NULL (TRUE) |
NULL |
TRUE |
|
FALSE |
FALSE |
FALSE |
FALSE |
|
FALSE (NULL) |
NULL (FALSE) |
FALSE |
NULL |
|
NULL |
NULL |
NULL |
NULL |
Следует обратить внимание на то, что условия поиска, объединенные с помощью ключевых слов AND, OR и NOT, сами могут быть составными.
Допустим, что необходимо найти фамилии всех абонентов, которые проживают на улицах с кодами от 3 до 6 или фамилии которых содержат букву 'Л'. Для вывода требуемой информации нужно выполнить следующий запрос: SELECT Fio FROM Abonent
предыдущаяследующая