Продвижение сайта по поисковым запросам, контекстная реклама, качественный копирайтинг и рерайтинг, создание сайта под ключ, QA процедуры и аудит в ИТ, бизнес анализ в Киеве, Украина.

Поиск

Админ

Оператор BETWEEN sql


Оператор BETWEEN sql

Оператор BETWEEN похож на оператор IN. В отличие от определения по номерам из набора, как это делает IN, BETWEEN определяет диапазон, значения которого должны уменьшаться, что делает предикат верным. Вы должны ввести ключевое слово BETWEEN с начальным значением, ключевое AND и конечное значение. В отличие от IN, BETWEEN чувствителен к порядку, и первое значение в предложении должно быть первым в алфавитном или числовом порядке. Обратите внимание, что, в отличие от английского языка, SQL не говорит "значение находится между (BETWEEN) значением и значением”, а просто "значение BETWEEN значение AND значение”. Это применимо и к оператору LIKE (см. ниже). Следующий пример будет извлекать из таблицы Продавцов всех продавцов с комиссионными между .10 и .12 (вывод показывается в Рисунке 5.4):

SELECT *
FROM Salespeople
WHERE comm BETWEEN .10 AND .12;

Для включенного оператора BETWEEN, значение совпадающее с любым из двух значений границы (в этом случае, .10 и .12) заставляет предикат быть верным.

===============  SQL Execution Log ============
| SELECT *                                      |
| FROM Salespeople                              |
| WHERE comm BETWEEN .10 AND .12;               |
| ==============================================|
|   snum      sname         city         comm   |
| ------    ----------   -----------   -------  |
|   1001      Peel         London        0.12   |
|   1004      Motika       London        0.11   |
|   1003      Axelrod      New York      0.10   |
===============================================

Рисунок 5.4: SELECT использует BETWEEN

SQL не имеет поддержки исключения границ диапазона в выражении BETWEEN. Вы должны или определить ваши граничные значения так, чтобы включающая интерпретация была приемлема, или сделать что-нибудь типа этого:

SELECT *
FROM Salespeople
WHERE (comm BETWEEN .10, AND .12) AND NOT comm IN (.10, .12);

Вывод для этого запроса показывается в Рисунке 5.5.

===============  SQL Execution Log ============
| SELECT *                                      |
| FROM Salespeople                              |
| WHERE (comm BETWEEN .10 AND .12               |
| AND NOT comm IN (.10, .12);                   |
| ==============================================|
|   snum      sname         city         comm   |
| ------    ----------   -----------   -------  |
|   1004      Motika       London        0.11   |
===============================================

Рисунок 5.5. Сделать BETWEEN — невключающим

По общему признанию, это немного неуклюже, но зато показывает, как эти новые операторы могут комбинироваться с операторами Буля, чтобы производить более сложные предикаты. В основном, вы используете IN и BETWEEN так же, как вы использовали реляционные операторы, чтобы сравнивать значения, которые берутся либо из набора (для IN) либо из диапазона (для BETWEEN).

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

Этот запрос выбирает всех заказчиков, чьи имена попали в диапазон от 'A' до 'G':

SELECT *
FROM Customers
WHERE cname BETWEEN 'A' AND 'G';

Вывод для этого запроса показывается в Рисунке 5.6.

===============  SQL Execution Log ============
| SELECT *                                      |
| FROM Customers                                |
| WHERE cname BETWEEN 'A' AND 'G';              |
| ============================================= |
|   cnum     cname    city     rating    snum   |
|  ------   --------  ------    ----   ------   |
|   2006     Clemens  London     100     1001   |
|   2008     Cisneros San Jose   300     1007   |
===============================================

Рисунок 5.6. Использование BETWEEN в алфавитном порядке.

Обратите внимание, что Grass и Giovanni отсутствуют. Это происходит из-за того, что BETWEEN сравнивает строки неравной длины. Строка 'G' более короткая, чем строка 'Giovanni', поэтому BETWEEN выводит 'G' с пробелами. Пробелы предшествуют символам в алфавитном порядке (в большинстве реализаций), поэтому 'Giovanni' не выбирается. То же самое происходит с Grass. Важно помнить это, когда вы используете BETWEEN для извлечения значений из алфавитных полей. Обычно вы указываете диапазон с помощью символа начала диапазона и символа конца (вместо которого можно просто поставить ‘z’).

Популярность: 6%




Оставить комментарий или два


Навигация

Блог / Главная / Разработка / Оператор BETWEEN sql

Инфо

Запись опубликовал admin 27 апреля 2010 года и разместил в рубрике Разработка.   Запись имеет метки:   К статье пока нет комментариев. Вы можете быть первым.  

Случайные записи

Уникальность как ограничение таблицы sql Общие принципы политики безопасности Удаление таблиц sql UNION и устранение дубликатов sql