Разработка баз данных в Delphi. 11 Уроков


 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


Содержание раздела