Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Especifica um intervalo a ser testado.
Transact-SQL convenções de sintaxe
Syntax
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
Arguments
test_expression
A expressão testar no intervalo definido por begin_expressione end_expression. test_expression deve ser do mesmo tipo de dados que begin_expression e end_expression.
NOT
Especifica que o resultado do predicado é negado.
begin_expression
Qualquer expressão válida. begin_expression deve ser do mesmo tipo de dados que test_expression e end_expression.
end_expression
Qualquer expressão válida. end_expression deve ser do mesmo tipo de dados que test_expressione begin_expression.
AND
Atua como um espaço reservado que indica test_expression deve estar dentro do intervalo indicado por begin_expression e end_expression.
Tipos de devolução
Boolean
Remarks
BETWEEN retorna TRUE se o valor de test_expression for maior ou igual ao valor de begin_expression e menor ou igual ao valor de end_expression.
NOT BETWEEN retorna TRUE se o valor de test_expression for menor que o valor de begin_expression ou maior que o valor de end_expression.
Para especificar um intervalo exclusivo, use o maior que (>) e menor que os operadores (<). Se qualquer entrada para o BETWEEN ou NOT BETWEEN predicado for NULL, o resultado depende dos resultados das partes constituintes.
No exemplo a seguir test_expression >= begin_expression AND test_expression <= end_expression, se qualquer uma das partes for FALSE a expressão BETWEEN geral será avaliada como FALSE. Caso contrário, a expressão é avaliada como UNKNOWN.
Examples
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar da home page Microsoft SQL Server Samples and Community Projects.
A. Uso ENTRE
O exemplo a seguir retorna informações sobre as funções de banco de dados em um banco de dados. A primeira consulta retorna todas as funções. O segundo exemplo usa a cláusula BETWEEN para limitar as funções aos valores de database_id especificados.
SELECT principal_id,
name
FROM sys.database_principals
WHERE type = 'R';
Aqui está o conjunto de resultados.
principal_id name
------------ ----
0 public
16384 db_owner
16385 db_accessadmin
16386 db_securityadmin
16387 db_ddladmin
16389 db_backupoperator
16390 db_datareader
16391 db_datawriter
16392 db_denydatareader
16393 db_denydatawriter
SELECT principal_id,
name
FROM sys.database_principals
WHERE type = 'R'
AND principal_id BETWEEN 16385 AND 16390;
GO
Aqui está o conjunto de resultados.
principal_id name
------------ ----
16385 db_accessadmin
16386 db_securityadmin
16387 db_ddladmin
16389 db_backupoperator
16390 db_datareader
B. Use > e < em vez de ENTRE
O exemplo a seguir usa operadores maiores que (>) e menores que (<) e, como esses operadores não são inclusivos, retorna nove linhas em vez de 10 que foram retornadas no exemplo anterior.
SELECT e.FirstName,
e.LastName,
ep.Rate
FROM HumanResources.vEmployee AS e
INNER JOIN HumanResources.EmployeePayHistory AS ep
ON e.BusinessEntityID = ep.BusinessEntityID
WHERE ep.Rate > 27
AND ep.Rate < 30
ORDER BY ep.Rate;
GO
Aqui está o conjunto de resultados.
FirstName LastName Rate
--------- ------------------- ---------
Paula Barreto de Mattos 27.1394
Janaina Bueno 27.4038
Dan Bacon 27.4038
Ramesh Meyyappan 27.4038
Karen Berg 27.4038
David Bradley 28.7500
Hazem Abolrous 28.8462
Ovidiu Cracium 28.8462
Rob Walters 29.8462
C. Utilizar NÃO ENTRE
O exemplo a seguir localiza todas as linhas fora de um intervalo especificado de 27 a 30.
SELECT e.FirstName,
e.LastName,
ep.Rate
FROM HumanResources.vEmployee AS e
INNER JOIN HumanResources.EmployeePayHistory AS ep
ON e.BusinessEntityID = ep.BusinessEntityID
WHERE ep.Rate NOT BETWEEN 27 AND 30
ORDER BY ep.Rate;
GO
D. Use BETWEEN com valores datetime
O exemplo a seguir recupera linhas nas quais valores de datetime estão entre 20011212 e 20020105, inclusive.
SELECT BusinessEntityID,
RateChangeDate
FROM HumanResources.EmployeePayHistory
WHERE RateChangeDate BETWEEN '20011212' AND '20020105';
Aqui está o conjunto de resultados.
BusinessEntityID RateChangeDate
----------- -----------------------
3 2001-12-12 00:00:00.000
4 2002-01-05 00:00:00.000
A consulta recupera as linhas esperadas, porque os valores de data na consulta e os valores de datetime armazenados na coluna RateChangeDate são especificados sem a parte de hora da data. Quando a parte de tempo não é especificada, o padrão é 12:00 A.M. Uma linha que contém uma parte de tempo que é posterior às 12:00 da manhã de 5 de janeiro de 2002 não é retornada por esta consulta, porque ela está fora do intervalo.