Проверка на принадлежность значений (оператор BETWEEN AND)
Сравнение
Наиболее распространенным условием отбора в SQL является сравнение. При сравнении СУБД вычисляет и сравнивает значения двух выражений для каждой' строки данных. В SQL имеется шесть различных способов сравнения выражений (по количеству операций сравнения). В ORACLE операции сравнения обозначаются посредством следующих символов: =, !=(не равно), <, >, <=, >=.
Приведем примеры использования запросов с условиями отбора типа сравнения:
Найти служащих с зарплатой меньше 300
select fname, lname
fromstaff
where salary< 300;
Найти служащих, родившихся до 1988 года
selectfname, lname
fromstaff
where DOB<’01-Jan-88’
Вывести адреса и номера телефонов всех “не Минских” отделений
select address, tel_no
from branch
where city !=’Минск’;
Следует также отметить, что условие сравнение можно делать и составным, объединяя простые сравнения логическими предикатами AND и OR.
Другой формой условия отбора является проверка на принадлежность диапазону значений (оператор BETWEEN … AND). При этом проверяется, находится ли элемент данных между двумя заданными значениями.
Следующий пример иллюстрирует типичную процедуру проверки на принадлежность диапазону:
Найти служащих, родившихся в интервале времени с 1октября 1963 по 31 декабря 1971
selectfname, lname
fromstaff
where DOB between ’01-Oct-63’ and ’31-Dec-71’;
Здесь следует отметить, что проверка на принадлежность диапазону не расширяет возможностей SQL, поскольку её можно выразить в виде двух сравнений, т. е. выражение A between B and C эквивалентно (A>=B) and (A<=C).
Помимо рассмотренной проверки в SQL существует также и инверсная проверка на принадлежность диапазону, реализованная с помощью оператора NOT BETWEEN … AND.
Еще одним распространенным условием отбора является проверка на членство в множестве (оператор in). В этом случае проверяется, соответствует ли элемент данных какому-либо значению из заданного списка.
Следующий пример иллюстрирует процедуру проверки на членство в множестве:
Вывести информацию об офисах, расположенных в Минске, Витебске и Бресте
select address, tel_no
from branch
where city in (‘Минск’, ‘Витебск’, ‘Брест’);
Проверка IN не добавляет новых возможностей, так же как и BETWEEN … AND, так как условие X IN (A, B, C) полностью эквивалентно условию (X=A) OR (X=B) OR (X=C)