Самоучитель по SQL-сервер в Linux



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

Ключевые слова 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)