Читайте также:
|
|
Надеюсь, предыдущий пример с тремя условиями прост и понятен. Но рассмотрим следующий вариант:
WHERE end_date IS NULL
AND NOT (title = 'Teller' OR start_date < '2003_01_01')
Заметили отличие от предыдущего примера? После оператора and во второй строке появился оператор not. Теперь, вместо поиска неуволен_ ных сотрудников, или являющихся операционистами, или начавших работать в банке до 2003 года, выбираются неуволенные сотрудники, которые или не являются операционистами, или начали работу в бан_ ке в 2003 и позже. В табл. 4.3 показаны возможные результаты выпол_ нения этого примера.
Таблица 4.3. Результаты вычисления выражений с тремя условиями, разделенными операторами and, or и not
Промежуточный результат | Конечный результат |
WHERE true AND NOT (true OR true) | False |
WHERE true AND NOT (true OR false) | False |
WHERE true AND NOT (false OR true) | False |
WHERE true AND NOT (false OR false) | True |
WHERE false AND NOT (true OR true) | False |
WHERE false AND NOT (true OR false) | False |
Создание условия | ||||
Промежуточный результат | Конечный результат | |||
WHERE false AND NOT (false OR true) | False | |||
WHERE false AND NOT (false OR false) | False | |||
Сервер легко обработает такое выражение, а человеку оценить блок, включающий оператор not, обычно трудно. Вот почему он использует_ ся нечасто. В данном случае блок where можно изменить и записать без оператора not следующим образом:
WHERE end_date IS NULL
AND title!= 'Teller' AND start_date >= '2003_01_01'
Серверу наверняка все равно, а человеку, пожалуй, проще понять этот вариант блока where.
Дата добавления: 2015-08-17; просмотров: 49 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Оценка условия | | | Изменение данных с помощью условий равенства |