Critério de pesquisa (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

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

Convenções de sintaxe de Transact-SQL

Sintaxe

Sintaxe para SQL Server, Banco de Dados SQL do Azure e Instância Gerenciada de SQL do Azure.

<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

Sintaxe para Azure Synapse Analytics e 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)
    }

Argumentos

<search_condition>

Especifica as condições para as linhas retornadas no conjunto de resultados para uma SELECT instrução, expressão de consulta ou subconsulta. Para uma UPDATE instrução, especifica as linhas a serem atualizadas. Para uma DELETE instrução, especifica as linhas a serem excluídas. Não há limite para o número de predicados que podem ser incluídos em um padrão de pesquisa de instrução Transact-SQL.

<graph_search_pattern>

Especifica o padrão de correspondência do grafo. Para obter mais informações sobre os argumentos para esta cláusula, consulte CORRESP

NOT

Nega a expressão booliana especificada pelo predicado. Para obter mais informações, consulte NOT.

AND

Combina duas condições e avalia quando TRUE ambas as condições são TRUE. Para obter mais informações, consulte AND.

OR

Combina duas condições e avalia quando TRUE uma das condições é TRUE. Para obter mais informações, consulte OR.

<predicate>

Uma expressão que retorna TRUE, FALSE, ou UNKNOWN. Para obter mais informações, confira Predicados.

expressão

Especifica um nome de coluna, uma constante, uma função, uma variável, uma subconsulta escalar ou qualquer combinação de nomes de coluna, constantes e funções conectadas por um operador ou operadores ou uma subconsulta. A expressão também pode conter a CASE expressã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. O SQL Server converte constantes e variáveis de cadeia de caracteres não Unicode na página de código que corresponde à ordenação da coluna referenciada ou especificada usando COLLATE, se essa página de código for diferente da página de código que corresponde à ordenação padrão do banco de dados. Todos os caracteres não encontrados na nova página de código são convertidos em um caractere semelhante se um mapeamento de melhor ajuste puder ser encontrado, ou então são convertidos para o caractere de substituição padrão de ?.

Quando você trabalha com várias páginas de código, as constantes de caractere podem ser prefixadas com a letra Nmaiúscula e as variáveis Unicode podem ser usadas para evitar conversões de página de código.

Operador =

O operador usado para testar a igualdade entre duas expressões.

Operador <>

O operador usado para testar a condição de duas expressões não serem iguais entre si.

Operador !=

O operador usado para testar a condição de duas expressões não serem iguais entre si.

Operador >

O operador usado para testar a condição de uma expressão ser maior que a outra.

Operador >=

O operador usado para testar a condição de uma expressão ser maior ou igual à outra expressão.

Operador !>

O operador usado para testar a condição de uma expressão não ser maior que a outra expressão.

Operador <

O operador usado para testar a condição de uma expressão ser menor que a outra.

Operador <=

O operador usado para testar a condição de uma expressão ser menor ou igual à outra expressão.

Operador !<

O operador usado para testar a condição de uma expressão não ser menor que a outra expressão.

string_expression

Uma sequência de caracteres e caracteres curinga.

[ NÃO ] GOSTAR

Indica que a cadeia de caracteres subsequente será usada com uma correspondência de padrão. Para obter mais informações, consulte CURTIR.

ESCAPE 'escape_ personagem'

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.

[ NÃO ] ENTRE

Especifica um intervalo inclusivo de valores. Use AND para separar os valores inicial e final. Para obter mais informações, consulte BETWEEN.

IS [ NOT ] NULL

Especifica uma pesquisa por valores nulos ou por valores que não são nulos, dependendo das palavras-chave usadas. Uma expressão com um operador bit a bit ou aritmético é avaliada como NULL se qualquer um dos operandos é NULL.

IS [ NOT ] DISTINCT FROM

Compara a igualdade de duas expressões e garante um resultado verdadeiro ou falso, 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. Essa opção só pode ser usada com SELECT instruções. Para obter mais informações, consulte CONTAINS.

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. Essa opção só pode ser usada com SELECT instruções. Para obter mais informações, consulte FREETEXT.

[ 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.

subquery

Pode ser considerada uma declaração restrita SELECT e é semelhante à <query_expression> SELECT da instrução. A ORDER BY cláusula e a INTO palavra-chave não são permitidas. Para obter mais informações, consulte SELECT.

ALL

Usado com um operador de comparação e uma subconsulta. Retorna TRUE para <predicate> quando todos os valores recuperados para a subconsulta satisfazem a operação de comparação, ou FALSE quando nem todos os valores satisfazem a comparação ou quando a subconsulta não retorna nenhuma linha para a instrução externa. Para obter mais informações, consulte ALL.

{ SOME | ANY }

Usado com um operador de comparação e uma subconsulta. Retorna TRUE para <predicate> quando qualquer valor recuperado para a subconsulta satisfaz a operação de comparação, ou FALSE quando nenhum valor na subconsulta satisfaz a 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, consulte ALGUNS | QUALQUER.

EXISTS

Usada com uma subconsulta para testar para a existência de linhas retornadas pela subconsulta. Para obter mais informações, consulte EXISTS.

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 operam em valores lógicos, consulte AND, OR e NOT.

Exemplos

Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.

R. Use WHERE com a sintaxe 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. Se você não especificar a ESCAPE opção, a consulta pesquisará todos os valores de descrição que contenham a palavra green seguida por um único caractere que não seja o _ caractere.

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

B. Usar 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
INNER 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. Use 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. Usar 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%';