Логические операторы

 

Ключевые слова AND, OR и NOT являются логическими (булевыми) операторами PostgreSQL. Обычно они используются для операций с логическими условиями в командах SQL, особенно в секциях WHERE и HAVING.

В табл. 5.7 приведена сводка результатов, возвращаемых логическими операторами AND, OR и NOT для всех возможных сочетаний операндов (true, false и NULL).

 

Таблица 5.7. Операторы AND, OR и NOT

а b aANDb aORb NOT a NOTb
true true true true false false
true false false true false true
true NULL NULL true false NULL
false false false false true true
false NULL false NULL true NULL
NULL NULL NULL NULL NULL NULL

В листинге 5.14 приведена пара запросов с ключевыми словами OR и AND, объединяющими условия выборки записей. Первый запрос возвращает информацию о книгах, которые стоят больше 30 долларов или отсутствуют на складе. Как видно из итогового набора, для возвращения записи должно выполняться одно или оба условия.

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

Листинг 5.14. Объединение условий с использованием логических операторов

booktown=# SELECT isbn, cost, stock

booktown-# FROM stock

booktown-# WHERE cost > 30

booktown-# OR stock = 0:

Isbn cost | stock

0394900014 23.00 | 0

044100590X | 36.00 | 89

0451198492 | 36.00 | 0

0451457994 17.00 j 0 (4 rows)

booktown=# SELECT Isbn, cost, stock

booktown-# FROM stock

booktown-# WHERE cost > 30

booktown-# AND stock = 0;

Isbn | cost stock

0451198492 36.00 0

(1 row)