Реляционные операции. Команды языка манипулирования данными
BETWEEN
Предикат BETWEEN задает диапазон значений, для которого выражение принимает значение true. Разрешено также использовать конструкцию NOT BETWEEN.
SELECT first_name, last_name, salary
FROM employee
WHERE salary BETWEEN 20000 AND 30000
получить список сотрудников,
годовая зарплата
которых
больше 20000 и
меньше 30000.
FIRST_NAME LAST_NAME SALARY
=============== ========== ===============
Ann Bennet 22935.00
Kelly Brown 27000.00
Тот же запрос с использованием операторов сравнения будет выглядеть следующим образом:
SELECT first_name, last_name, salary
FROM employee
WHERE salary >= 20000
AND salary <= 30000 получить список сотрудников,
годовая зарплата
которых
больше 20000 и
меньше 30000.
FIRST_NAME LAST_NAME SALARY
=============== ========== ===============
Ann Bennet 22935.00
Kelly Brown 27000.00
Запрос с предикатом BETWEEN может иметь следующий вид:
SELECT first_name, last_name, salary
FROM employee
WHERE last_name BETWEEN "Nelson" AND "Osborne"
получить список сотрудников, фамилии которых начинаются с
“Nelson” и
заканчиваются“Osborne”.
FIRST_NAME LAST_NAME SALARY
=============== =============== ================
Robert Nelson 105900.00
Carol Nordstrom 42742.50
Sue Anne O'Brien 31275.00
Pierre Osborne 110000.00
Значения, определяющие нижний и верхний диапазоны, могут не являться реальными величинами из базы данных.
SELECT first_name, last_name, salary
FROM employee
WHERE last_name BETWEEN "Nel" AND "Osb"
получить список сотрудников,
фамилии которых
находятся
между “Nel” и
“Osb”.
FIRST_NAME LAST_NAME SALARY
=============== =============== ================
Robert Nelson 105900.00
Carol Nordstrom 42742.50
Sue Anne O'Brien 31275.00
В данном примере значений “Nel” и “Osb” в базе данных нет. Однако все сотрудники, входящие в диапазон, в нижней части которого начало фамилий совпадает с “Nel” (т.е. выполняется условие “больше или равно”), а в верхней части фамилия не более “Osb” (т.е. выполняется условие “меньше или равно” - а именно “O”, “Os”, “Osb”) попадут в выборку. Отметим, что при выборке с использованием предиката BETWEEN поле, на которое накладывается диапазон, считается упорядоченным по возрастанию.
Предикат BETWEEN с отрицанием NOT (NOT BETWEEN) позволяет получить выборку записей, указанные поля которых имеют значения меньше нижней границы и больше верхней границы.
SELECT first_name, last_name, hire_date
FROM employee
WHERE hire_date NOT BETWEEN "1-JAN-1989" AND "31-DEC-1993" получить
список самых “старых”
и самых “молодых”
(по времени
поступления на
работу) сотрудников.
FIRST_NAME LAST_NAME HIRE_DATE
=============== ================ ===========
Robert Nelson 28-DEC-1988
Bruce Young 28-DEC-1988
Pierre Osborne 3-JAN-1994
John Montgomery 30-MAR-1994
Mark Guckenheimer 2-MAY-1994
предыдущаяследующая