Условие поиска (Transact-SQL)Search Condition (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Сочетание одного или нескольких предикатов, в котором используются логические операторы AND, OR и NOT.Is a combination of one or more predicates that use the logical operators AND, OR, and NOT.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

-- Syntax for SQL Server and Azure SQL Database  
  
<search_condition> ::=  
    MATCH(<graph_search_pattern>) | <search_condition_without_match> | <search_condition> AND <search_condition>

<search_condition_without_match> ::= 
    { [ NOT ] <predicate> | ( <search_condition_without_match> ) }   
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition_without_match> ) } ]   
[ ,...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 )     }   
    
<graph_search_pattern> ::=
    { <node_alias> { 
                      { <-( <edge_alias> )- } 
                    | { -( <edge_alias> )-> }
                    <node_alias> 
                   } 
    }
  
<node_alias> ::=
    node_table_name | node_table_alias 

<edge_alias> ::=
    edge_table_name | edge_table_alias
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
< search_condition > ::=   
    { [ NOT ] <predicate> | ( <search_condition> ) }   
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]   
[ ,...n ]   
  
<predicate> ::=   
    { expression { = | < > | ! = | > | > = | < | < = } expression   
    | string_expression [ NOT ] LIKE string_expression   
    | expression [ NOT ] BETWEEN expression AND expression   
    | expression IS [ NOT ] NULL   
    | expression [ NOT ] IN (subquery | expression [ ,...n ] )   
    | expression [ NOT ] EXISTS (subquery)     }   

АргументыArguments

<search_condition><search_condition>
Задает условия для строк, возвращаемых в результирующем наборе инструкции SELECT, выражения запроса или вложенного запроса.Specifies the conditions for the rows returned in the result set for a SELECT statement, query expression, or subquery. Задает обновляемые строки для инструкции UPDATE.For an UPDATE statement, specifies the rows to be updated. Задает удаляемые строки для инструкции DELETE.For a DELETE statement, specifies the rows to be deleted. Количество предикатов, которое может содержаться в условии поиска для инструкции Transact-SQLTransact-SQL, не ограничено.There is no limit to the number of predicates that can be included in a Transact-SQLTransact-SQL statement search condition.

<graph_search_pattern><graph_search_pattern>
Определяет шаблон сопоставления графов.Specifies the graph match pattern. Дополнительные сведения об аргументах этого предложения см. в статье MATCH (Transact-SQL).For more information about the arguments for this clause, see MATCH (Transact-SQL)

NOTNOT
Инвертирует логическое выражение, задаваемое предикатом.Negates the Boolean expression specified by the predicate. Дополнительные сведения см. в разделе NOT (Transact-SQL).For more information, see NOT (Transact-SQL).

ANDAND
Объединяет два условия и выдает значение TRUE, если оба условия имеют значение TRUE.Combines two conditions and evaluates to TRUE when both of the conditions are TRUE. Дополнительные сведения см. в разделе AND (Transact-SQL).For more information, see AND (Transact-SQL).

OROR
Объединяет два условия и выдает значение TRUE, если хотя бы одно условие имеет значение TRUE.Combines two conditions and evaluates to TRUE when either condition is TRUE. Дополнительные сведения см. в разделе OR (Transact-SQL).For more information, see OR (Transact-SQL).

< predicate >< predicate >
Выражение, возвращающее значения TRUE, FALSE или UNKNOWN.Is an expression that returns TRUE, FALSE, or UNKNOWN.

expressionexpression
Может являться именем столбца, константой, функцией, переменной, скалярным вложенным запросом или любым сочетанием имен столбцов, констант и функций, связанных операторами или вложенным запросом.Is a column name, a constant, a function, a variable, a scalar subquery, or any combination of column names, constants, and functions connected by an operator or operators, or a subquery. Также может содержать выражение CASE.The expression can also contain the CASE expression.

Примечание

Строковые константы и переменные не в Юникоде используют кодовую страницу, соответствующую параметрам сортировки базы данных, действующим по умолчанию.Non-Unicode string constants and variables use the code page that corresponds to the default collation of the database. Преобразования кодовых страниц могут происходить при работе только с символьными данными не в Юникоде и упоминании символьных типов данных char, varchar и text не в Юникоде.Code page conversions can occur when working with only non-Unicode character data and referencing the non-Unicode character data types char, varchar, and text. SQL ServerSQL Server преобразует строковые константы и переменные не в Юникоде в кодовую страницу, соответствующую параметрам сортировки упоминаемого столбца или столбца, указанного с помощью предложения COLLATE, если эта кодовая страница отличается от кодовой страницы, соответствующей параметрам сортировки по умолчанию базы данных.converts non-Unicode string constants and variables to the code page that corresponds to the collation of the referenced column or specified using COLLATE, if that code page is different than the code page that corresponds to the default collation of the database. Символы, не найденные на новой кодовой странице, преобразуются в похожий символ при обнаружении наилучшего соответствия либо, в противном случае, преобразуются в символ замены по умолчанию "?".Any characters not found in the new code page will be translated to a similar character, if a best-fit mapping can be found, or else will be converted to the default replacement character of "?".

Чтобы при работе с несколькими кодовыми страницами избежать их преобразования, можно использовать переменные Юникода, а символьные константы могут иметь префикс в виде прописной буквы N.When working with multiple code pages, character constants can be prefixed with the uppercase letter 'N', and Unicode variables can be used, to avoid code page conversions.

=
Оператор, используемый для проверки равенства двух выражений.Is the operator used to test the equality between two expressions.

<>
Оператор, используемый для проверки условий неравенства условий двух выражений.Is the operator used to test the condition of two expressions not being equal to each other.

!=!=
Оператор, используемый для проверки условий неравенства условий двух выражений.Is the operator used to test the condition of two expressions not being equal to each other.

>
Оператор, используемый для проверки превышения одного выражения над условием другого.Is the operator used to test the condition of one expression being greater than the other.

>=
Оператор, используемый для проверки превышения либо равенства двух выражений.Is the operator used to test the condition of one expression being greater than or equal to the other expression.

!>!>
Оператор, используемый для проверки того, что одно выражение не превышает другое выражение.Is the operator used to test the condition of one expression not being greater than the other expression.

<
Оператор, используемый для проверки того, что одно выражение меньше другого.Is the operator used to test the condition of one expression being less than the other.

<=
Оператор, используемый для проверки того, что одно выражение меньше или равно другому.Is the operator used to test the condition of one expression being less than or equal to the other expression.

!<!<
Оператор, используемый для проверки того, что одно выражение не меньше другого.Is the operator used to test the condition of one expression not being less than the other expression.

string_expressionstring_expression
Строка обычных символов и символов-шаблонов.Is a string of characters and wildcard characters.

[ NOT ] LIKE[ NOT ] LIKE
Указывает, что последующая строка символов будет использоваться с сопоставлением шаблонов.Indicates that the subsequent character string is to be used with pattern matching. Дополнительные сведения см. в разделе LIKE (Transact-SQL).For more information, see LIKE (Transact-SQL).

ESCAPE 'escape_ character'ESCAPE 'escape_ character'
Позволяет найти сам символ-шаблон в строке (вместо того чтобы использовать его как шаблон).Allows for a wildcard character to be searched for in a character string instead of functioning as a wildcard. escape_character — это символ, который нужно поместить перед символом-шаблоном, чтобы указать данное специальное использование.escape_character is the character that is put in front of the wildcard character to indicate this special use.

[ NOT ] BETWEEN[ NOT ] BETWEEN
Задает включающий диапазон значений.Specifies an inclusive range of values. Используйте оператор AND для разделения начальных и конечных значений.Use AND to separate the starting and ending values. Дополнительные сведения см. в статье BETWEEN (Transact-SQL).For more information, see BETWEEN (Transact-SQL).

IS [ NOT ] NULLIS [ NOT ] NULL
Задает поиск значений NULL или значений, не являющихся значениями NULL, в зависимости от используемых ключевых слов.Specifies a search for null values, or for values that are not null, depending on the keywords used. При обращении одного из операндов выражения с битовыми или арифметическими операторами в значение NULL указанное выражение также обращается в значение NULL.An expression with a bitwise or arithmetic operator evaluates to NULL if any one of the operands is NULL.

CONTAINSCONTAINS
Осуществляет поиск столбцов, содержащих символьные данные с заданной точностью (fuzzy), соответствующие заданным отдельным словам и фразам на основе похожести словам и точному расстоянию между словами, взвешенному совпадению.Searches columns that contain character-based data for precise or less precise (fuzzy) matches to single words and phrases, the proximity of words within a certain distance of one another, and weighted matches. Этот параметр может быть использован только в инструкции SELECT.This option can only be used with SELECT statements. Дополнительные сведения см. в статье CONTAINS (Transact-SQL).For more information, see CONTAINS (Transact-SQL).

FREETEXTFREETEXT
Предоставляет простую форму естественного языка ввода запросов на осуществление поиска столбцов, содержащих символьные данные, совпадающие с содержанием предиката не точно, а по смыслу.Provides a simple form of natural language query by searching columns that contain character-based data for values that match the meaning instead of the exact words in the predicate. Этот параметр может быть использован только в инструкции SELECT.This option can only be used with SELECT statements. Дополнительные сведения см. в статье FREETEXT (Transact-SQL).For more information, see FREETEXT (Transact-SQL).

[ NOT ] IN[ NOT ] IN
Задает поиск выражения, основанного на выражении, включенного или исключенного из списка.Specifies the search for an expression, based on whether the expression is included in or excluded from a list. Выражение поиска может быть константой или именем столбца, а списком может быть набор констант или, что чаще, вложенный запрос.The search expression can be a constant or a column name, and the list can be a set of constants or, more typically, a subquery. Список значений необходимо заключать в скобки.Enclose the list of values in parentheses. Дополнительные сведения см. в статье IN (Transact-SQL).For more information, see IN (Transact-SQL).

subquerysubquery
Может рассматриваться как ограниченная инструкция SELECT и являющаяся подобной <query_expresssion> в инструкции SELECT.Can be considered a restricted SELECT statement and is similar to <query_expression> in the SELECT statement. Использование предложения ORDER BY и ключевого слова INTO не допускается.The ORDER BY clause and the INTO keyword are not allowed. Дополнительные сведения см. в статье SELECT (Transact-SQL).For more information, see SELECT (Transact-SQL).

ALLALL
Используется с оператором сравнения и вложенным запросом.Used with a comparison operator and a subquery. Возвращает для <predicate> значение TRUE, если все получаемые для вложенного запроса значения удовлетворяют условию, и значение FALSE, если не все значения удовлетворяют условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки.Returns TRUE for <predicate> when all values retrieved for the subquery satisfy the comparison operation, or FALSE when not all values satisfy the comparison or when the subquery returns no rows to the outer statement. Дополнительные сведения см. в статье ALL (Transact-SQL).For more information, see ALL (Transact-SQL).

{ SOME | ANY }{ SOME | ANY }
Используется с оператором сравнения и вложенным запросом.Used with a comparison operator and a subquery. Возвращает для <predicate> значение TRUE, если хотя бы одно получаемое для вложенного запроса значение удовлетворяет условию, и значение FALSE, если ни одно из значений не удовлетворяет условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки.Returns TRUE for <predicate> when any value retrieved for the subquery satisfies the comparison operation, or FALSE when no values in the subquery satisfy the comparison or when the subquery returns no rows to the outer statement. В противном случае результатом выражения является значение UNKNOWN.Otherwise, the expression is UNKNOWN. Дополнительные сведения см. в статье SOME | ANY (Transact-SQL).For more information, see SOME | ANY (Transact-SQL).

EXISTSEXISTS
Используется во вложенном запросе для проверки существования строк, возвращенных вложенным запросом.Used with a subquery to test for the existence of rows returned by the subquery. Дополнительные сведения см. в статье EXISTS (Transact-SQL).For more information, see EXISTS (Transact-SQL).

ПримечанияRemarks

Приоритеты выполнения логических операторов распределяются следующим образом: NOT (наивысший приоритет), AND, OR (низший приоритет).The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. Для перераспределения указанных приоритетов в условии поиска используются скобки.Parentheses can be used to override this precedence in a search condition. Порядок выполнения логических операторов может меняться в зависимости от настроек оптимизатора запросов.The order of evaluation of logical operators can vary depending on choices made by the query optimizer. Дополнительные сведения о работе логических операторов с логическими значениями см. в статьях AND (Transact-SQL), OR (Transact-SQL) и NOT (Transact-SQL).For more information about how the logical operators operate on logic values, see AND (Transact-SQL), OR (Transact-SQL), and NOT (Transact-SQL).

ПримерыExamples

A.A. Использование предложения WHERE с синтаксисом LIKE и ESCAPEUsing WHERE with LIKE and ESCAPE syntax

В ходе выполнения следующего примера производится поиск строк, для которых элементы столбца LargePhotoFileName содержат символы green_, а также для символа-шаблона _ используется параметр ESCAPE.The following example searches for the rows in which the LargePhotoFileName column has the characters green_, and uses the ESCAPE option because _ is a wildcard character. Без указания параметра ESCAPE в ходе выполнения запроса будет производиться поиск всех описанных значений, содержащих слово green, за которым следует любой единичный символ, отличный от _.Without specifying the ESCAPE option, the query would search for any description values that contain the word green followed by any single character other than the _ character.

USE AdventureWorks2012 ;  
GO  
SELECT *   
FROM Production.ProductPhoto  
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a' ;  

Б.B. Использование предложения WHERE и синтаксиса LIKE с данными в ЮникодеUsing WHERE and LIKE syntax with Unicode data

В следующем примере используется предложение WHERE для отображения всех адресов офисов компаний, находящихся за пределами США (US) и в городах, названия которых начинаются с Pa.The following example uses the WHERE clause to retrieve the mailing address for any company that is outside the United States (US) and in a city whose name starts with Pa.

USE AdventureWorks2012 ;  
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'Pa%' ;  

Примеры: Хранилище данных SQL AzureAzure SQL Data Warehouse и Параллельное хранилище данныхParallel Data WarehouseExamples: Хранилище данных SQL AzureAzure SQL Data Warehouse and Параллельное хранилище данныхParallel Data Warehouse

В.C. Использование предложения WHERE с LIKEUsing WHERE with LIKE

В следующем примере производится поиск строк, в которых столбец LastName содержат символы and.The following example searches for the rows in which the LastName column has the characters and.

-- Uses AdventureWorks  
  
SELECT EmployeeKey, LastName  
FROM DimEmployee  
WHERE LastName LIKE '%and%';  

Г.D. Использование предложения WHERE и синтаксиса LIKE с данными в ЮникодеUsing WHERE and LIKE syntax with Unicode data

В следующем примере используется предложение WHERE для выполнения поиска в формате Юникод в столбце LastName.The following example uses the WHERE clause to perform a Unicode search on the LastName column.

-- Uses AdventureWorks  
  
SELECT EmployeeKey, LastName  
FROM DimEmployee  
WHERE LastName LIKE N'%and%';  

См. такжеSee Also

Агрегатные функции (Transact-SQL) Aggregate Functions (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
Курсоры (Transact-SQL) Cursors (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
Выражения (Transact-SQL) Expressions (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
Операторы (Transact-SQL) Operators (Transact-SQL)
UPDATE (Transact-SQL)UPDATE (Transact-SQL)