BETWEEN (Transact-SQL)

 

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2008)síBase de datos SQL de AzuresíAlmacenamiento de datos SQL de Azure síAlmacenamiento de datos paralelos

Especifica un intervalo que se va a probar.

Topic link icon Convenciones de sintaxis de Transact-SQL

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
test_expression [ NOT ] BETWEEN begin_expression AND end_expression  

test_expression
Es el expresión para la prueba en el intervalo definido por begin_expressiony end_expression. test_expression debe ser el mismo tipo de datos que begin_expression y end_expression.

NOT
Especifica que se niega el resultado del predicado.

begin_expression
Es cualquier expresión válida. begin_expression debe ser el mismo tipo de datos que test_expression y end_expression.

end_expression
Es cualquier expresión válida. end_expression debe ser el mismo tipo de datos que test_expressiony begin_expression.

y
Actúa como un marcador de posición que indica test_expression debe estar dentro del intervalo indicado por begin_expression y end_expression.

Valor booleano

BETWEEN devuelve TRUE si el valor de test_expression es mayor o igual que el valor de begin_expression y menor o igual que el valor de end_expression.

NOT BETWEEN devuelve TRUE si el valor de test_expression es menor que el valor de begin_expression o mayor que el valor de end_expression.

Para especificar un intervalo exclusivo, utilice los operadores mayor que (>) y menor que (<). Si alguna entrada del predicado BETWEEN o NOT BETWEEN es NULL, el resultado es UNKNOWN.

A. Utilizar BETWEEN

En el siguiente ejemplo se devuelven los empleados de Adventure Works Cycles cuya tarifa por hora se encuentra entre 27 y 30.

-- Uses AdventureWorks  
  
SELECT e.FirstName, e.LastName, ep.Rate  
FROM HumanResources.vEmployee e   
JOIN HumanResources.EmployeePayHistory ep   
    ON e.BusinessEntityID = ep.BusinessEntityID  
WHERE ep.Rate BETWEEN 27 AND 30  
ORDER BY ep.Rate;  
GO  

El conjunto de resultados es el siguiente.

FirstName LastName Rate

----------- ------------------ ------------------

Paula Barreto de Mattos 27.1394

Karen Berg 27.4038

Ramesh Meyyappan 27.4038

Dan Bacon 27.4038

Janaina Bueno 27.4038

David Bradley 28.7500

Hazem Abolrous 28.8462

Ovidiu Cracium 28.8462

Rob Walters 29.8462

Sheela Word 30.0000

(10 row(s) affected)

B. Utilizar > y < en lugar de BETWEEN

En el siguiente ejemplo se utilizan los operadores mayor que (>) y menor que (<) y, puesto que dichos operadores no son inclusivos, se devuelven nueve filas en lugar de las diez devueltas en el ejemplo anterior.

-- Uses AdventureWorks  
  
SELECT e.FirstName, e.LastName, ep.Rate  
FROM HumanResources.vEmployee e   
JOIN HumanResources.EmployeePayHistory ep   
    ON e.BusinessEntityID = ep.BusinessEntityID  
WHERE ep.Rate > 27 AND ep.Rate < 30  
ORDER BY ep.Rate;  
GO  

El conjunto de resultados es el siguiente.

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

(9 row(s) affected)

C. Utilizar NOT BETWEEN

En el siguiente ejemplo se buscan todas las filas que no están incluidas en un intervalo especificado de 27 a 30.

-- Uses AdventureWorks  
  
SELECT e.FirstName, e.LastName, ep.Rate  
FROM HumanResources.vEmployee e   
JOIN HumanResources.EmployeePayHistory ep   
    ON e.BusinessEntityID = ep.BusinessEntityID  
WHERE ep.Rate NOT BETWEEN 27 AND 30  
ORDER BY ep.Rate;  
GO  

D. Utilizar BETWEEN con valores datetime

En el ejemplo siguiente se recuperan filas en las que datetime valores están comprendidos entre '20011212' y '20020105', ambos inclusive.

-- Uses AdventureWorks  
  
SELECT BusinessEntityID, RateChangeDate  
FROM HumanResources.EmployeePayHistory  
WHERE RateChangeDate BETWEEN '20011212' AND '20020105';  

El conjunto de resultados es el siguiente.

BusinessEntityID RateChangeDate

----------- -----------------------

3 2001-12-12 00:00:00.000

4 2002-01-05 00:00:00.000

La consulta recupera las filas previstas porque los valores de fecha en la consulta y la datetime valores almacenados en la RateChangeDate columna se han especificado sin la parte de hora de la fecha. Si no se especifica la parte de hora, toma el valor predeterminado 12:00 a.m. Tenga en cuenta que esta consulta no devolverá una fila que contenga una parte de hora posterior a 12:00 a.m. del 05-01-2002, ya que está fuera del rango.

E. Utilizar BETWEEN

El ejemplo siguiente devuelve los empleados de una compañía que tenga una tasa de pago por hora entre 27 y 30, ambos inclusive.

-- Uses AdventureWorks  
  
SELECT FirstName, LastName, BaseRate  
FROM dimEmployee  
WHERE BaseRate BETWEEN 27 AND 30  
ORDER BY BaseRate DESC;  

F. Usar > = y<= instead of BETWEEN instead="" of=""></= instead of BETWEEN>

En el ejemplo siguiente se utiliza la mayor o igual que (>=) y menor o igual a (<=) operadores para realizar la misma consulta como consulta BETWEEN anterior.

-- Uses AdventureWorks  
  
SELECT FirstName, LastName, BaseRate  
FROM dimEmployee  
WHERE BaseRate >= 27 AND BaseRate <= 30  
ORDER BY BaseRate DESC;  

G. Utilizar NOT BETWEEN

En el ejemplo siguiente se buscan todas las filas fuera del intervalo de 27 a través de 30.

-- Uses AdventureWorks  
  
SELECT FirstName, LastName, BaseRate  
FROM dimEmployee  
WHERE BaseRate NOT BETWEEN 27 AND 30  
ORDER BY BaseRate DESC;  

H. Utilizar BETWEEN con valores de fecha

En el ejemplo siguiente se recuperan los empleados con BirthDate valores están comprendidos entre '1950-01-01' y '1969-12-31', ambos inclusive.

-- Uses AdventureWorks  
  
SELECT FirstName, LastName, BirthDate  
FROM dimEmployee  
WHERE BirthDate BETWEEN '1950-01-01' AND '1969-12-31'  
ORDER BY BirthDate ASC;  

> (Mayor que) (Transact-SQL)
< (Menor que) (Transact-SQL)
Expresiones (Transact-SQL)
Funciones integradas (Transact-SQL)
Operadores (Transact-SQL)
SELECT (Transact-SQL)
DONDE (Transact-SQL)

Adiciones de comunidad

AGREGAR
Mostrar: