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 Analytics Platform System (PDW) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric Banco de Dados SQL no Microsoft Fabric
Uma combinação de um ou mais predicados que usam os operadores AND
ló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 N
maiú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%';