Лекции.Орг


Поиск:




Where comm between. 10 AND. 12




AND NOT comm IN (.10,.12);

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

Рисунок 17 Сделать BETWEEN – невключенным

 

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

Этот запрос выбирает всех заказчиков чьи имена попали в определенный алфавитный диапазон:

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

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

Рисунок 18 Использование BETWEEN в алфавитных порядках

 

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

Оператор LIKE

LIKE применим только к полям типа CHAR или VARCHAR, с которыми он используется, чтобы находить подстроки. Т.е. он ищет поле символа, чтобы видеть, совпадает ли с условием часть его строки. В качестве условия он использует групповые символы (wildkards) - специальные символы которые могут соответствовать чему-нибудь. Имеются два типа групповых символов используемых с LIKE:

· символ (?) замещает любой одиночный символ. Например, 'b?t' будет соответствовать словам 'bat' или 'bit', но не будет соответствовать 'brat'.

· символ (*) замещает последовательность любого числа символов (включая символы нуля). Например '*p*t' будет соответствовать словам 'put', 'posit', или 'opt', но не 'spite '.

Давайте найдем всех заказчиков, чьи имена начинаются с G (вывод показывается в Рисунке 19):

SELECT *
FROM Customers
WHERE cname LIKE 'G*';

 

Рисунок 19: SELECT использует LIKE с *

 

LIKE может быть удобен, если вы ищете имя или другое значение, и не помните, как они точно пишутся. Предположим, что вы не уверенны как пишется по буквам имя одного из ваших продавцов Peal или Peel. Вы можете просто использовать ту часть которую вы знаете и групповые символы чтобы находить все возможные пары (вывод этого запроса показывается в Рисунке 20):

SELECT *
FROM Salespeople
WHERE sname LIKE 'P??l*';

 

Рисунок 20 SELECT использует LIKE с (?)

 

Символ «?», каждый из которых представляет один символ, добавят только два символа к уже существующим 'P' и 'l', поэтому имя наподобие Prettel не может быть показано. Символ 'l' не будет рассматриваться концом строки т.к. символ «*» - просто соответствует этим пробелам. Это необязательно, если поля sname имеет тип - VARCHAR.

А что же Вы будете делать если вам нужно искать знак «?» или «*». В LIKE предикате, вы можете определить любой одиночный символ взяв его [*].

Допустим, в таблице Salespeople, написано имя с символом * (например: Po*l). Нам необходимо найти все имена с таким символом. То запрос будет выглядеть так:

SELECT *

FROM Salespeople

WHERE sname LIKE '*[*]*';

А если имя написано с символом? (например: Po?l), то запрос будет выглядеть:

SELECT *

FROM Salespeople

WHERE sname LIKE '*[?]*';

 

NULL оператор

Так как NULL указывает на отсутствие значения, вы не можете знать каков будет результат любого сравнения с использованием NULL. Когда NULL сравнивается с любым значением, даже с другим таким же NULL, результат будет ни верным, ни неверным, он - неизвестен. Неизвестный Булев, вообще ведет себя также как неверная строка, которая произведя неизвестное значение в предикате не будет выбрана запросом - имейте ввиду, что в то время как NOT (неверное) - равняется верно, NOT (неизвестное) - равняется неизвестно.

Следовательно, выражение типа 'city = NULL' или 'city IN (NULL)' будет неизвестно, независимо от значения city.

Часто вы должны делать различия между неверно и неизвестно - между строками содержащими значения столбцов которые не соответствуют условию предиката и которые содержат NULL в столбцах. По этой причине, SQL предоставляет специальный оператор IS, который используется с ключевым словом NULL, для размещения значения NULL.

Найдем все записи в нашей таблице Заказчиков с NULL (не заполненными значениями) в city:

SELECT *
FROM Customers
WHERE city IS NULL;

Здесь не будет никакого вывода, потому что мы не имеем никаких значений NULL в наших типовых таблицах.





Поделиться с друзьями:


Дата добавления: 2016-12-05; Мы поможем в написании ваших работ!; просмотров: 384 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

818 - | 738 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.