Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по SQL.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
960 Кб
Скачать

Использование варианта between

Близок к операторам сравнения вариант BETWEEN, который, выглядит следующим образом:

<значение> [NOT] BETWEEN <значение> AND <значение>

Это применимо как к числовым, так и к строковым столбцам, дате, времени — ко всем, за исключением BLOB.

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

Еще раз обратимся к полному списку личностей. Выберем из этого списка только тех, чья дата рождения находится в диапазоне от 1.01.1960 до 31.12.1969:xv

SELECT PR_NAME2 AS "Имя",

PR_NAME3 AS "Отчество",

PR_NAME AS "Фамилия",

PR_BIRTHDAY AS "Дата рождения"

FROM PERSON

WHERE PR_BIRTHDAY BETWEEN '1.01.1960' AND '31.12.1969'

ORDER BY PR_BIRTHDAY, PR_NAME

Листинг 10. Список рожденных в диапазоне от 1.01.1960 до 31.12.1969

Имя

Отчество

Фамилия

Дата рождения

Татьяна

Викторовна

Владысик

19.10.1960

Светлана

Александровна

Ветошкина

23.12.1960

Татьяна

Александровна

Звездина

01.10.1961

Татьяна

Фёдоровна

Леушина

04.05.1963

Олег

Владимирович

Лядов

07.06.1964

Оксана

Васильевна

Власова

11.02.1965

Надежда

Александровна

Зеленина

11.12.1965

Татьяна

Евгеньевна

Беспалова

21.12.1965

Татьяна

Александровна

Соснина

05.12.1968

Татьяна

Александровна

Мазеина

06.04.1969

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

SELECT PR_NAME2 AS "Имя",

PR_NAME3 AS "Отчество",

PR_NAME AS "Фамилия",

PR_BIRTHDAY AS "Дата рождения"

FROM PERSON

WHERE PR_BIRTHDAY >= '1.01.1960' AND PR_BIRTHDAY <= '31.12.1969'

ORDER BY PR_BIRTHDAY, PR_NAME

Результат будет такой же, но вариант запроса с использованием BЕTWEEN намного более выразительный.

ЗАМЕЧАНИЕ

Логическое выражение в предложении WHERE нашего примера содержит только операторы конъюнкции (логическое И). По этой причине я здесь не использую скобок. Вообще же очень рекомендую всегда использовать скобки для явного задания порядка выполнения любых операторов, в особенности логических, потому что не часто на лету, когда в поте лица своего пишешь гениальную программу (при обычном отставании от утвержденного графика), вспомнишь порядок выполнения этих операций. Я вот только помню, что конъюнкция выполняется прежде дизъюнкции. Скобки совершенно необходимы, когда у вас довольно сложное логическое выражение. Иначе выяснение причин, почему неверно осуществляется выборка данных, может затянуться на длительное время.

Есть еще один неприятный момент для любителей языка Delphi, который раньше назывался Объектный Паскаль. Там при использовании операций сравнения и логических операций порядок выполнения действий отличается от того, что принято в языке SQL. В этом языке и сами операции сравнения следует заключать в скобки, чтобы избежать ошибок трансляции.