Консультация № 106489
23.10.2007, 15:03
0.00 руб.
0 4 4
Добрый день!
Интересует вопрос оператор лог. ИЛИ (OR) по идее дает 1 если хотя бы 1 единица. А в БД проверяет значение обоих операндов, по идее если первый в условии истинен то второго касаться проверка вообще не должна...
Или это зависит от настройки СУБД?

Обсуждение

Неизвестный
23.10.2007, 15:24
общий
это ответ
Здравствуйте, Hoolio!
Вы не совсем правы. Если, допустим, первый операнд 1, то проверка не доходит до второго. Если 0, то проверяется следующий, и т.д. То есть OR возвращает 1 только в случае того как в условии будет найдена первая 1. (имеется в виду булевы значения).
Неизвестный
23.10.2007, 16:51
общий
это ответ
Здравствуйте, Hoolio!
В СУДБ логические выражения работают по обычной логике (AND, OR)
При этом если выражение состоит из нескольких операторов, проверку на истиность пройдут все.
Исключение составляет значение содержащее Null, при нем логические выражения ведут себя по правилам конкретной СУБД.
Неизвестный
24.10.2007, 05:38
общий
это ответ
Здравствуйте, Hoolio!
Небольшое замечание по Oracle - проверка идет с конца и как только встретиться выражение, дающее TRUE, то остальные проверки уже не выполняются
Неизвестный
24.10.2007, 07:44
общий
это ответ
Здравствуйте, Hoolio!

Наиболее часто лог. операторы используются в предложении where для выборки определенных значений и поэтому проверяются все выражения.
Пример:
tabl1
id int

select * from tabl1
where (id=3) or (id=7)
выбираются строки со значениями id 3 или 7
от настроек СУБД это не зависит.

Форма ответа