Critério de pesquisa (Transact-SQL)Search Condition (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

É uma combinação de um ou mais predicados que usam os operadores lógicos AND, OR e NOT.Is a combination of one or more predicates that use the logical operators AND, OR, and NOT.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- 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)     }   

ArgumentosArguments

<search_condition><search_condition>
Especifica as condições para as linhas retornadas no conjunto de resultados para uma instrução SELECT, expressão de consulta ou subconsulta.Specifies the conditions for the rows returned in the result set for a SELECT statement, query expression, or subquery. Para uma instrução UPDATE, especifica as linhas a serem atualizadas.For an UPDATE statement, specifies the rows to be updated. Para uma instrução DELETE, especifica as linhas a serem excluídas.For a DELETE statement, specifies the rows to be deleted. Não há nenhum limite para o número de predicados que podem ser incluídos em um critério de pesquisa da instrução 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>
Especifica o padrão de correspondência de grafo.Specifies the graph match pattern. Para obter mais informações sobre os argumentos dessa cláusula, consulte MATCH (Transact-SQL)For more information about the arguments for this clause, see MATCH (Transact-SQL)

NOTNOT
Nega a expressão booliana especificada pelo predicado.Negates the Boolean expression specified by the predicate. Para obter mais informações, consulte NOT (Transact-SQL).For more information, see NOT (Transact-SQL).

ANDAND
Combina duas condições e avalia como TRUE quando ambas são TRUE.Combines two conditions and evaluates to TRUE when both of the conditions are TRUE. Para obter mais informações, consulte AND (Transact-SQL).For more information, see AND (Transact-SQL).

OUOR
Combina duas condições e avalia como TRUE quando uma delas é TRUE.Combines two conditions and evaluates to TRUE when either condition is TRUE. Para obter mais informações, consulte OR (Transact-SQL).For more information, see OR (Transact-SQL).

< predicate >< predicate >
É uma expressão que retorna TRUE, FALSE ou UNKNOWN.Is an expression that returns TRUE, FALSE, or UNKNOWN.

expressãoexpression
É um nome de coluna, uma constante, uma função, uma variável, uma subconsulta escalar ou qualquer combinação de nomes de colunas, constantes e funções conectadas por um operador ou operadores ou por uma subconsulta.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. A expressão também pode conter a expressão CASE.The expression can also contain the CASE expression.

Observação

Variáveis e constantes de cadeia de caracteres não Unicode usam a página de código que corresponde à ordenação padrão do banco de dados.Non-Unicode string constants and variables use the code page that corresponds to the default collation of the database. As conversões de página de código podem ocorrer ao trabalhar somente com os dados de caractere não Unicode e referenciar os tipos de dados de caractere não Unicode char, varchar e 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 converte variáveis e constantes de cadeia de caracteres não Unicode na página de código que corresponde à ordenação da coluna referenciada ou especificada com COLLATE, caso a página de código seja diferente da página de código que corresponde à ordenação padrão do banco de dados.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. Os caracteres não encontrados na nova página de código serão convertidos em um caractere semelhante se um mapeamento de melhor ajuste puder ser encontrado; caso contrário, eles serão convertidos no caractere de substituição padrão "?".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 "?".

Ao trabalhar com várias páginas de código, as constantes de caractere podem ser prefixadas com a letra maiúscula 'N', e as variáveis Unicode podem ser usadas, a fim de evitar conversões de página de código.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.

=
É o operador usado para testar a igualdade entre duas expressões.Is the operator used to test the equality between two expressions.

<>
É o operador usado para testar a condição de duas expressões que não são iguais.Is the operator used to test the condition of two expressions not being equal to each other.

!=!=
É o operador usado para testar a condição de duas expressões que não são iguais.Is the operator used to test the condition of two expressions not being equal to each other.

>
É o operador usado para testar a condição de uma expressão maior do que a outra.Is the operator used to test the condition of one expression being greater than the other.

>=
É o operador usado para testar a condição de uma expressão maior que ou igual a outra.Is the operator used to test the condition of one expression being greater than or equal to the other expression.

!>!>
É o operador usado para testar a condição de uma expressão que não é maior que a outra.Is the operator used to test the condition of one expression not being greater than the other expression.

<
É o operador usado para testar a condição de uma expressão menor do que a outra.Is the operator used to test the condition of one expression being less than the other.

<=
É o operador usado para testar a condição de uma expressão menor que ou igual a outra.Is the operator used to test the condition of one expression being less than or equal to the other expression.

!<!<
É o operador usado para testar a condição de uma expressão que não é menor que a outra.Is the operator used to test the condition of one expression not being less than the other expression.

string_expressionstring_expression
É uma cadeia de caracteres e caracteres e curinga.Is a string of characters and wildcard characters.

[ NOT ] LIKE[ NOT ] LIKE
Indica que a cadeia de caracteres subsequente será usada com uma correspondência de padrão.Indicates that the subsequent character string is to be used with pattern matching. Para obter mais informações, consulte LIKE (Transact-SQL).For more information, see LIKE (Transact-SQL).

ESCAPE 'escape_ character'ESCAPE 'escape_ character'
Permite pesquisar um caractere curinga em uma cadeia de caracteres, em vez de funcionar como um curinga.Allows for a wildcard character to be searched for in a character string instead of functioning as a wildcard. escape_character é o caractere colocado na frente do caractere curinga para indicar esse uso especial.escape_character is the character that is put in front of the wildcard character to indicate this special use.

[ NOT ] BETWEEN[ NOT ] BETWEEN
Especifica um intervalo inclusivo de valores.Specifies an inclusive range of values. Use AND para separar os valores inicial e final.Use AND to separate the starting and ending values. Para obter mais informações, consulte BETWEEN (Transact-SQL).For more information, see BETWEEN (Transact-SQL).

IS [ NOT ] NULLIS [ NOT ] NULL
Especifica uma pesquisa de valores nulos ou de valores não nulos, dependendo das palavras-chave usadas.Specifies a search for null values, or for values that are not null, depending on the keywords used. Uma expressão com um operador bit a bit ou aritmético avaliará como NULL se qualquer um dos operandos for NULL.An expression with a bitwise or arithmetic operator evaluates to NULL if any one of the operands is NULL.

CONTAINSCONTAINS
Pesquisa colunas que contêm tipos de dados baseados em caracteres para obter correspondências precisas ou menos precisas (difusas) para palavras e frases únicas, proximidade entre palavras dentro de determinada distância e correspondências ponderadas.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. Esta opção só pode ser usada com instruções SELECT.This option can only be used with SELECT statements. Para obter mais informações, consulte CONTAINS (Transact-SQL).For more information, see CONTAINS (Transact-SQL).

FREETEXTFREETEXT
Fornece uma forma simples de consulta de idioma natural pesquisando colunas que contêm dados baseados em caracteres para obter valores que correspondam ao significado em vez das palavras exatas no predicado.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. Esta opção só pode ser usada com instruções SELECT.This option can only be used with SELECT statements. Para obter mais informações, consulte FREETEXT (Transact-SQL).For more information, see FREETEXT (Transact-SQL).

[ NOT ] IN[ NOT ] IN
Especifica a pesquisa de uma expressão, com base na inclusão ou exclusão da expressão em uma lista.Specifies the search for an expression, based on whether the expression is included in or excluded from a list. A expressão da pesquisa pode ser uma constante ou um nome de coluna, e a lista pode ser um conjunto de constantes ou, normalmente, uma subconsulta.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. Inclua a lista de valores em parênteses.Enclose the list of values in parentheses. Para obter mais informações, consulte IN (Transact-SQL).For more information, see IN (Transact-SQL).

subquerysubquery
Pode ser considerada uma instrução SELECT restrita e é semelhante a <query_expresssion> na instrução SELECT.Can be considered a restricted SELECT statement and is similar to <query_expression> in the SELECT statement. A cláusula ORDER BY e a palavra-chave INTO não são permitidas.The ORDER BY clause and the INTO keyword are not allowed. Para obter mais informações, consulte SELECT (Transact-SQL).For more information, see SELECT (Transact-SQL).

ALLALL
Usado com um operador de comparação e uma subconsulta.Used with a comparison operator and a subquery. Retorna TRUE para <predicate> quando todos os valores recuperados para a subconsulta atendem à operação de comparação ou FALSE quando nem todos os valores atendem à comparação ou quando a subconsulta não retorna nenhuma linha para a instrução externa.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. Para obter mais informações, consulte ALL (Transact-SQL).For more information, see ALL (Transact-SQL).

{ SOME | ANY }{ SOME | ANY }
Usado com um operador de comparação e uma subconsulta.Used with a comparison operator and a subquery. Retorna TRUE para <predicate> quando qualquer valor recuperado para a subconsulta atende à operação de comparação ou FALSE quando nenhum valor na subconsulta atende à comparação, ou quando a subconsulta não retorna nenhuma linha para a instrução externa.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. Caso contrário, a expressão é UNKNOWN.Otherwise, the expression is UNKNOWN. Para obter mais informações, consulte SOME | ANY (Transact-SQL).For more information, see SOME | ANY (Transact-SQL).

EXISTSEXISTS
Usada com uma subconsulta para testar para a existência de linhas retornadas pela subconsulta.Used with a subquery to test for the existence of rows returned by the subquery. Para obter mais informações, consulte EXISTS (Transact-SQL).For more information, see EXISTS (Transact-SQL).

RemarksRemarks

A ordem de precedência para operadores lógicos é NOT (mais alto), seguido por AND, seguido por OR.The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. Podem ser usados parênteses para substituir essa precedência em uma condição de pesquisa.Parentheses can be used to override this precedence in a search condition. A ordem de avaliação de operadores lógicos pode variar, dependendo das escolhas feitas pelo otimizador de consultas.The order of evaluation of logical operators can vary depending on choices made by the query optimizer. Para obter mais informações sobre como os operadores lógicos funcionam em valores lógicos, consulte AND (Transact-SQL), OR (Transact-SQL) e 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).

ExemplosExamples

A.A. Usando a sintaxe WHERE com LIKE e ESCAPEUsing WHERE with LIKE and ESCAPE syntax

O exemplo a seguir pesquisa as linhas nas quais a coluna LargePhotoFileName tem os caracteres green_ e usa a opção ESCAPE porque _ é um caractere curinga.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. Sem especificar a opção ESCAPE, a consulta pesquisará quaisquer valores de descrição que contêm a palavra green seguida de qualquer caractere único diferente do caractere _.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.B. Usando a sintaxe WHERE e LIKE com dados UnicodeUsing WHERE and LIKE syntax with Unicode data

O exemplo a seguir usa a cláusula WHERE para recuperar o endereço para correspondência para qualquer empresa que esteja fora dos Estados Unidos (US) e em uma cidade cujo nome comece com 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%' ;  

Exemplos: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) e Parallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) and Parallel Data WarehouseParallel Data Warehouse

C.C. Usando WHERE com LIKEUsing WHERE with LIKE

O exemplo a seguir pesquisa as linhas nas quais a coluna LastName tem os caracteres 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.D. Usando a sintaxe WHERE e LIKE com dados UnicodeUsing WHERE and LIKE syntax with Unicode data

O exemplo a seguir usa a cláusula WHERE para realizar uma pesquisa Unicode na coluna 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%';  

Consulte TambémSee Also

Funções de agregação (Transact-SQL) Aggregate Functions (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
Cursores (Transact-SQL) Cursors (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
Expressões (Transact-SQL) Expressions (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
Operadores (Transact-SQL) Operators (Transact-SQL)
UPDATE (Transact-SQL)UPDATE (Transact-SQL)