Условие поиска (Transact-SQL)
Сочетание одного или нескольких предикатов, в котором используются логические операторы AND, OR и NOT.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
< 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
Строка обычных символов и символов-шаблонов.
- [ NOT ] LIKE
Показывает, что обрабатываемая строка должна использоваться при сравнении с шаблоном. Дополнительные сведения см. в разделе LIKE (Transact-SQL).
- ESCAPE 'escape_ character'
Позволяет осуществлять поиск символа-шаблона в строке символов вместо его функционирования как шаблона. Аргумент escape_character — это символ, помещаемый перед символом-шаблоном, чтобы показать его специальное использование при его использовании в качестве обычного символа.
- [ NOT ] BETWEEN
Задает включающий диапазон значений. Используйте оператор AND для разделения начальных и конечных значений. Дополнительные сведения см. в разделе Оператор BETWEEN (Transact-SQL).
- IS [ NOT ] NULL
Задает поиск значений NULL или значений, не являющихся значениями NULL, в зависимости от используемых ключевых слов. При обращении одного из операндов выражения с битовыми или арифметическими операторами в значение NULL указанное выражение также обращается в значение NULL.
- CONTAINS
Осуществляет поиск столбцов, содержащих символьные данные с заданной точностью (fuzzy), соответствующие заданным отдельным словам и фразам на основе похожести словам и точному расстоянию между словами, взвешенному совпадению. Этот параметр может быть использован только в инструкции SELECT. Дополнительные сведения см. в разделе CONTAINS (Transact-SQL).
- FREETEXT
Предоставляет простую форму естественного языка ввода запросов на осуществление поиска столбцов, содержащих символьные данные, совпадающие с содержанием предиката не точно, а по смыслу. Этот параметр может быть использован только в инструкции SELECT. Дополнительные сведения см. в разделе FREETEXT (Transact-SQL).
- [ NOT ] IN
Задает поиск выражения, основанного на выражении, включенного или исключенного из списка. Выражение поиска может быть константой или именем столбца, а списком может быть набор констант или, что чаще, вложенный запрос. Список значений необходимо заключать в скобки. Дополнительные сведения см. в разделе IN (Transact-SQL).
- subquery
Может рассматриваться как ограниченная инструкция SELECT, и являющаяся подобной на <query_expresssion> в инструкции SELECT. Использование предложений ORDER BY, COMPUTE и ключевого слова INTO не допускается. Дополнительные сведения см. в разделе SELECT (Transact-SQL).
- ALL
Используется с оператором сравнения и вложенным запросом. Возвращает для <предиката> значение TRUE, если все получаемые для вложенного запроса значения удовлетворяют условию, и значение FALSE, если не все значения удовлетворяют условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки. Дополнительные сведения см. в разделе ALL (Transact-SQL).
- { SOME | ANY }
Используется с оператором сравнения и вложенным запросом. Возвращает для <предиката> значение TRUE, если хотя бы одно получаемое для вложенного запроса значение удовлетворяет условию, и значение FALSE, если ни одно из значений не удовлетворяет условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки. В противном случае результатом выражения является значение UNKNOWN. Дополнительные сведения см. в разделе SOME | ANY (Transact-SQL).
- EXISTS
Используется во вложенном запросе для проверки существования строк, возвращенных вложенным запросом. Дополнительные сведения см. в разделе EXISTS (Transact-SQL).
Замечания
Приоритеты выполнения логических операторов распределяются следующим образом: NOT (наивысший приоритет), AND, OR (низший приоритет). Для перераспределения указанных приоритетов в условии поиска используются скобки. Порядок выполнения логических операторов может меняться в зависимости от настроек оптимизатора запросов. Дополнительные сведения о выполнении логических операций см. в разделах AND (Transact-SQL), OR (Transact-SQL) и NOT (Transact-SQL).
Примеры
А. Использование предложения WHERE совместно с LIKE и ESCAPE
В ходе выполнения следующего примера производится поиск строк, для которых элементы столбца LargePhotoFileName
содержат символы green_
, а также для символа-шаблона _
используется параметр ESCAPE
. Без указания параметра ESCAPE
в ходе выполнения запроса будет производиться поиск всех описанных значений, содержащих слово green
, за которым следует любой единичный символ, отличный от _
.
USE AdventureWorks ;
GO
SELECT *
FROM Production.ProductPhoto
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a' ;
Б. Использование предложения WHERE и синтаксиса LIKE с данными в Юникоде
В следующем примере используется предложение WHERE
для отображения всех адресов офисов компаний, находящихся за пределами США (US
) и в городах, названия которых начинаются с Mn
.
USE AdventureWorks ;
GO
SELECT AddressLine1, AddressLine2, City, PostalCode, CountryRegionCode
FROM Person.Address AS a
JOIN Person.StateProvince AS s ON a.StateProvinceID = s.StateProvinceID
WHERE CountryRegionCode NOT IN ('US')
AND City LIKE N'Mn%' ;
См. также
Справочник
Статистические функции (Transact-SQL)
CASE (Transact-SQL)
Функция CONTAINSTABLE (Transact-SQL)
Курсоры (Transact-SQL)
DELETE (Transact-SQL)
Выражения (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL)
Операторы (Transact-SQL)
UPDATE (Transact-SQL)
Другие ресурсы
Запросы к SQL Server с использованием компонента Full-Text Search
Логические операторы