Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
доп.docx
Скачиваний:
37
Добавлен:
26.03.2016
Размер:
115.88 Кб
Скачать

4.2.2.5 Предложение where.

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

Синтаксис

[ WHERE < search_condition > ]

Аргументы:

- < search_condition >

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

Синтаксис < search_condition >

< search_condition > ::=

{ [ NOT ] < predicate> | ( < search_condition > ) }

[ { AND | OR } [ NOT ] { < predicate > | ( < search_condition > ) } ]

[ ,...n ]

< predicate > ::=

{ expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression

| string_expression [ NOT ] LIKE string_expression

[ ESCAPE 'escape_character' ]

| expression [ NOT ] BETWEEN expression AND expression

| expression IS [ NOT ] NULL

| CONTAINS

( { column | * } , '< contains_search_condition >' )

| FREETEXT ( { column | * } , 'freetext_string' )

| expression [ NOT ] IN ( subquery | expression [ ,...n ] )

| expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }

{ ALL | SOME | ANY} ( subquery )

| EXISTS ( subquery ) }

Аргументы:

- < search_condition >

Задает условия для строк, возвращаемых в результирующем наборе инструкции SELECT, выражения запроса или вложенного запроса. Задает обновляемые строки для инструкции UPDATE. Задает удаляемые строки для инструкции DELETE. Количество предикатов, которое может содержаться в условии поиска для инструкции Transact-SQL, не ограничено.

- NOT

Инвертирует логическое выражение, задаваемое предикатом. Дополнительные сведения см. в разделе NOT (Transact-SQL).

- AND

Объединяет два условия и выдает значение TRUE, если оба условия имеют значение TRUE. Дополнительные сведения см. в разделе AND (Transact-SQL).

- OR

Объединяет два условия и выдает значение TRUE, если хотя бы одно условие имеет значение TRUE. Дополнительные сведения см. в разделе OR (Transact-SQL).

- < predicate >

Выражение, возвращающее значения TRUE, FALSE или UNKNOWN. expression Может являться именем столбца, константой, функцией, переменной, скалярным вложенным запросом или любым сочетанием имен столбцов, констант и функций, связанных операторами или вложенным запросом. Выражение также может содержать функцию CASE.

= Оператор, используемый для проверки равенства двух выражений.

< > или !=

Оператор, используемый для проверки неравенства двух выражений.

>

Оператор, используемый для проверки превышения одного выражения над условием другого.

>=

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

!>

Оператор, используемый для проверки того, что одно выражение не превышает другое выражение.

<

Оператор, используемый для проверки того, что одно выражение меньше другого.

< =

Оператор, используемый для проверки того, что одно выражение меньше или равно другому.

!<

Оператор, используемый для проверки того, что одно выражение не меньше другого.

string_expression

Строка обычных символов и символов-шаблонов.

(4.2.3 Применение предиката LIKE.)

[ NOT ] LIKE

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

Создать запрос для поиска служащих, чьи фамилии оканчиваются на “ова”. Вы должны будете получить следующую инструкцию:

SELECT SURNAME, NAME

FROM EMPLOYEES

WHERE SURNAME LIKE '%ова'

В результате должен быть получен следующий результат:

SURNAME NAME

=======================

Белова Мария

Крылова Анна

ESCAPE 'escape_ character'

Позволяет осуществлять поиск символа-шаблона в строке символов вместо его функционирования как шаблона. Аргумент escape_character - это символ, помещаемый перед символом-шаблоном, чтобы показать его специальное использование при его использовании в качестве обычного символа.

(4.2.4 Применение предиката BETWEEN.)

[ NOT ]

BETWEEN

Задает включающий диапазон значений. Используйте оператор AND для разделения начальных и конечных значений.

Создать запрос, который возвращает все фамилии, начинающиеся с букв, расположенных между “А” и “К”.

SELECT SURNAME, NAME

FROM EMPLOYEES

WHERE SURNAME BETWEEN 'А' AND 'К'

Результирующий набор должен будет содержать:

SURNAME NAME

==================================

Белова Мария

IS [ NOT ] NULL

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

(4.2.5 Предикат CONTAINS.)

CONTAINS

Осуществляет поиск столбцов, содержащих символьные данные с заданной точностью (fuzzy), соответствующие заданным отдельным словам и фразам на основе похожести словам и точному расстоянию между словами, взвешенному совпадению. Этот параметр может быть использован только в инструкции SELECT.

Создать запрос на поиск клиентов, чьи названия содержаат буквы “i” и “I” в любом месте. Созданная инструкция должна принять следующий вид:

SELECT TITLE FROM CLIENTS WHERE CONTAINS (TITLE, 'I')

Должен быть получен следующий результат:

TITLE

=========

E-Life

IMC Computers

Comtris

Net Line

Oki

FREETEXT

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

(4.2.6 Предикат IN.)

[ NOT ] IN

Задает поиск выражения, основанного на выражении, включенного или исключенного из списка. Выражение поиска может быть константой или именем столбца, а списком может быть набор констант или, что чаще, вложенный запрос. Список значений необходимо заключать в скобки.

Создать запрос, который возвращает названия товаров, имеющих следующие цены: 15, 19, 32.

SELECT CATEGORY, SUPPLIER, PRICE

FROM GOODS

WHERE PRICE IN (15,19,32)

ORDER BY PRICE, CATEGORY

Должен быть получен следующий результирующий набор строк:

CATEGORY SUPPLIER PRICE

=============================================================

Модули памяти Uni 15

Устройства ввода и указания Гвин-Медиа 15

Модули памяти ПК Сервис 19

Сетевое оборудование BelSoft 32

Сетевое оборудование Гвин-Медиа 32

subquery

Может рассматриваться как ограниченная инструкция SELECT, и являющаяся подобной в инструкции SELECT. Использование предложений ORDER BY, COMPUTE и ключевого слова INTO не допускается (см. раздел 5.2.).

(4.2.7 Применение квантора ALL.)

ALL

Используется с оператором сравнения и вложенным запросом. Возвращает для <предиката> значение TRUE, если все получаемые для вложенного запроса значения удовлетворяют условию, и значение FALSE, если не все значения удовлетворяют условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки.

Предположим, что мы хотим найти все товары, которые дороже всех товаров фирмы «CD-Life». Введём следующий запрос:

SELECT Supplier, Mark, Price

FROM Goods

WHERE Price > ALL(SELECT Price FROM Goods

WHERE Supplier='CD-Life')

Результат должен выглядеть следующим образом:

Supplier Mark Price

=========================================

BelSoft Canon LBP810 195

DAAS Samsung 550B 150

Q-Senter Intel P4 1700MHz Box 137

Ситипринт Samtron 76E 180

(4.2.8 Применение кванторов SOME и ANY.)

{ SOME | ANY }

Используется с оператором сравнения и вложенным запросом. Возвращает для <предиката> значение TRUE, если хотя бы одно получаемое для вложенного запроса значение удовлетворяет условию, и значение FALSE, если ни одно из значений не удовлетворяет условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки. В противном случае результатом выражения является значение UNKNOWN.

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

SELECT Supplier, Mark, Price

FROM Goods

WHERE Price > ANY(SELECT Price FROM Goods WHERE Supplier='CD-Life')

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

Ключевое слово ANY является синонимом SOME. Они являются взаимозаменяемыми.

Ещё одним квантором является EXISTS. Он осуществляет проверку на существование хотя бы одной строки, удовлетворяющей условиям подзапроса, и возвращает соответственно TRUE или FALSE, даже если строки содержит значения NULL.

(4.2.9 Применение квантора EXISTS.)

EXISTS

Используется во вложенном запросе для проверки существования строк, возвращенных вложенным запросом.