Программирование >>  Sql: полное руководство 

1 ... 30 31 32 [ 33 ] 34 35 36 ... 264


проверка на принадлежность диапазону значений (оператор BETWEEN...AND)

Другой формой условия отбора является проверка на принадлежность диапазону значений (оператор between. . .and), схематически изображенная на рис. 6.8 При этом проверяется, находится ли элемент данных между двумя заданными значениями. В условие отбора входят три выражения. Первое выражение определяет проверяемое зндчение; второе и третье выражения определяют верхний и нижний пределы проверяемого диапазона. Типы данных трех выражений должны быть сравнимыми.

.-проверяемое выражение-.-т BETWEEN нижнее выражение MiD верхнее выраженив

Рис 6.8. Синтаксическая диаграмма проверки на принадлежность диапазону (оператор BETWEEN. . .AND)

Следующий пример иллюстрирует типичную процедуру проверки на принадлежность диапазону:

Найти все заказы, сделанные в последнем квартале 1989 года.

SELECT ORDERNUM, ORDER DATE, MFR, PRODUCT, AMOUNT FROM ORDERS

WHERE ORDER

DATE BETWEEN

Ol-OCT-89

AND 31-DEC-

ORDER NUM

ORDER DATE

PRODDCT

AMOUNT

112961

17-DEC-

2A44L

$31,500.00

112968

12-OCT-

41004

$3,978.00

112963

17-DEC-

41004

$3,276.00

112983

27-DEC-

41004

$702.00

112979

12-OCT-

4100Z

$15,ООО.00

112992

0 4-NOV-

41002

$760.00

112975

12-OCT-

2A44G

$2,100.00

112987

31-DEC-

4100Y

$27,500.00

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

Найти заказы, стоимости которых попадают в различные диапазоны.

SELECT ORDER NUM, AMOUNT FROM ORDERS WHERE AMOUNT BETWEEN 20000.00 AND 29999.99

ORDER NUM AMOUNT

113036 $22,500.00

112987 $27,500.00

113042 $22,500.00



SELECT ORDER NUM, AMOUNT FROM ORDERS WHERE AMOUNT BETWEEN 30000.00 AND 39999.99

ORDER NUM AMOUNT

112961 $31,500.00

113069 $31,350.00

SELECT ORDER NUM, AMOUNT FROM ORDERS WHERE AMOUNT BETWEEN 40000.00 AND 49999.99

ORDER NUM AMOUNT

113045 $45,000.00

Инвертированная версия проверки на принадлежность диапазону позволяет выбрать значения, которые лежат за пределами диапазона, как в следующем примере:

Вывести список служащих, фактические объемы продаж которых не попадают в диапазон от 80 до 120 процентов плана.

SELECT NAME, SALES, QUOTA FROM SALESREPS WHERE SALES NOT BETWEEN (.8 * QUOTA) AND (1.2 * QUOTA)

NAME SALES QUOTA

Mary Jones $392,725.00 $300,000.00

Sue Smith $474,050.00 $350,000.00

Bob Smith $142,594.00 $200,000.00

Nancy Angelli $186,042.00 $300,000.00

Поверяемое выражение, заданное в операторе between. . .and, может быть любым допустимым выражением, однако на практике оно обычно представляет собой короткое имя столбца.

В стандарте ANSI/ISO определены относительно сложные правила обработки значений null в проверке between:

если проверяемое выражение имеет значение null либо если оба выражения, определяющие диапазон, равны null, то проверка between возвращает null;

если выражение, определяющее нижнюю границу диапазона, имеет значение null, то проверка between возвращает false, когда проверяемое значение больще верхней границы диапазона, и null в противном случае;

если выражение, определяющее верхнюю границу диапазона, имеет значение null, то проверка between возвращает false, когда проверяемое значение меньще нижней границы диапазона, и null в противном случае.

Однако прежде чем полагаться на эти правила, неплохо было бы поэкспериментировать со своей СУБД.

Необходимо отметить, что проверка на принадлежность диапазону не расширяет возможности SQL, поскольку ее можно выразить в виде двух сравнений. Проверка

А BETWEEN В ANp C



полностью эквивалентна следующему сравнению:

(д >= В) AND (А <= С)

Тем не менее, проверка between является более простым способом выразить условие отбора в терминах диапазона значений.

Поверка на членство в множестве (оператор IN)

Еще одним распространенным условием отбора является проверка на членство в множестве (оператор in), схематически изображенная на рис. 6.9. В этом случае проверяется, соответствует ли элемент данных какому-либо значению из заданного списка. Ниже приведен ряд запросов с использованием проверки на членство в множестве:

Вывести список служащих, которые работают в Ныо-Йорке, Атланте или Денвере.

SELECT NAME, QUOTA, SALES FROM SALESREPS WHERE REP OFFICE IN (11, 13, 22)

NAME QUOTA SALES

Bill Adams .$350, 000.00 $367, 911.00

Mary Jones $300,000.00 $392,725.00

Sam Clarlc $275,000.00 $299, 912.00

Nancy Angelli $300,000.00 $186,042.00

Найти все заказы, сделанные во вторники в январе 1990 года.

SELECT ORDER NUM, ORDER DATE, AMOUNT FROM ORDERS

WHERE ORDER DATE IN ( 04-JAN-90 , ll-JAN-90, 18-JAN-90, 25-JAN-90 ORDER NUM ORDER DATE AMOUNT

113012 ll-JAN-90 $3,745.00

113003 25-JAN-90 $5,625.00

Найти все заказы, полученные четырьмя конкретными служащими.

SELECT ORDER NUM, REP, AMOUNT FROM ORDERS WHERE REP IN (107, 109, 101, 103)

ORDER NUM REP AMOUNT

113012

$3,745.00

112968

$3,978.00

113058

$1,480.00

112997

$652.00

113062

$2,430.00

113069

$31,350.00

112975

$2,100.00

113055

$150.00

113003

$5,625.00

113057

$600.00



1 ... 30 31 32 [ 33 ] 34 35 36 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика