Critério de pesquisa (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Uma combinação de um ou mais predicados que usam os operadores lógicos AND, OR e NOT.

Convenções de sintaxe de Transact-SQL

Sintaxe

-- 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   
    | expression IS [ NOT ] DISTINCT FROM   
    | 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 Synapse Analytics 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)
    }

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

<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. Para uma instrução UPDATE, especifica as linhas a serem atualizadas. Para uma instrução DELETE, especifica as linhas a serem excluídas. 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-SQL.

<graph_search_pattern>
Especifica o padrão de correspondência do grafo. Para obter mais informações sobre os argumentos dessa cláusula, confira MATCH (Transact-SQL)

NOT
Nega a expressão booliana especificada pelo predicado. Para obter mais informações, confira NOT (Transact-SQL).

AND
Combina duas condições e avalia como TRUE quando ambas são TRUE. Para obter mais informações, confira AND (Transact-SQL).

OU
Combina duas condições e avalia como TRUE quando uma delas é TRUE. Para obter mais informações, confira OR (Transact-SQL).

< predicado >
É uma expressão que retorna TRUE, FALSE ou UNKNOWN.

expressão
É 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. A expressão também pode conter a expressão CASE.

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. 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. SQL 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. 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 "?".

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.

=
É o operador usado para testar a igualdade entre duas expressões.

<>
É o operador usado para testar a condição de duas expressões que não são iguais.

!=
É o operador usado para testar a condição de duas expressões que não são iguais.

>
É o operador usado para testar a condição de uma expressão maior do que a outra.

>=
É o operador usado para testar a condição de uma expressão maior que ou igual a outra.

!>
É o operador usado para testar a condição de uma expressão que não é maior que a outra.

<
É o operador usado para testar a condição de uma expressão menor do que a outra.

<=
É o operador usado para testar a condição de uma expressão menor que ou igual a outra.

!<
É o operador usado para testar a condição de uma expressão que não é menor que a outra.

string_expression
É uma cadeia de caracteres e caracteres e curinga.

[ NOT ] LIKE
Indica que a cadeia de caracteres subsequente será usada com uma correspondência de padrão. Confira mais informações em LIKE (Transact-SQL).

ESCAPE 'escape_ character'
Permite pesquisar um caractere curinga em uma cadeia de caracteres, em vez de funcionar como um curinga. escape_character é o caractere colocado na frente do caractere curinga para indicar esse uso especial.

[ NOT ] BETWEEN
Especifica um intervalo inclusivo de valores. Use AND para separar os valores inicial e final. Para obter mais informações, confira BETWEEN (Transact-SQL).

IS [ NOT ] NULL
Especifica uma pesquisa de valores nulos ou de valores não nulos, dependendo das palavras-chave usadas. Uma expressão com um operador bit a bit ou aritmético avaliará como NULL se qualquer um dos operandos for NULL.

IS [ NOT ] DISTINCT FROM
Compara a igualdade de duas expressões e garante um resultado true ou false, mesmo que um ou ambos os operandos sejam NULL. Para obter mais informações, confira IS [NOT] DISTINCT FROM (Transact-SQL).

CONTAINS
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. Esta opção só pode ser usada com instruções SELECT. Para obter mais informações, confira CONTAINS (Transact-SQL).

FREETEXT
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. Esta opção só pode ser usada com instruções SELECT. Para obter mais informações, confira FREETEXT (Transact-SQL).

[ NOT ] IN
Especifica a pesquisa de uma expressão, com base na inclusão ou exclusão da expressão em uma lista. 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. Inclua a lista de valores em parênteses. Para obter mais informações, consulte IN (Transact-SQL).

subquery
Pode ser considerada uma instrução SELECT restrita e é semelhante a <query_expresssion> na instrução SELECT. A cláusula ORDER BY e a palavra-chave INTO não são permitidas. Para obter mais informações, confira SELECT (Transact-SQL).

ALL
Usado com um operador de comparação e uma subconsulta. Retorna TRUE para <predicado> 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. Para obter mais informações, confira ALL (Transact-SQL).

{ SOME | ANY }
Usado com um operador de comparação e uma subconsulta. Retorna TRUE para <predicado> 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. Caso contrário, a expressão é UNKNOWN. Para obter mais informações, confira SOME | ANY (Transact-SQL).

EXISTS
Usada com uma subconsulta para testar para a existência de linhas retornadas pela subconsulta. Para obter mais informações, confira EXISTS (Transact-SQL).

Comentários

A ordem de precedência para operadores lógicos é NOT (mais alto), seguido por AND, seguido por OR. Podem ser usados parênteses para substituir essa precedência em uma condição de pesquisa. A ordem de avaliação de operadores lógicos pode variar, dependendo das escolhas feitas pelo otimizador de consultas. Para obter mais informações sobre como os operadores lógicos funcionam em valores lógicos, confira AND (Transact-SQL), OR (Transact-SQL) e NOT (Transact-SQL).

Exemplos

a. Usando a sintaxe WHERE com LIKE e ESCAPE

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. Sem especificar a opção ESCAPE, a consulta pesquisará quaisquer valores de descrição que contenham a palavra green seguida de qualquer caractere único diferente do caractere _.

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

B. Usando a sintaxe WHERE e LIKE com dados Unicode

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.

USE AdventureWorks2022;  
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 e PDW (Analytics Platform System)

C. Usando WHERE com LIKE

O exemplo a seguir pesquisa as linhas nas quais a coluna LastName tem os caracteres and.

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

D. Usando a sintaxe WHERE e LIKE com dados Unicode

O exemplo a seguir usa a cláusula WHERE para realizar uma pesquisa Unicode na coluna LastName.

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

Confira também