Primero necesitamos crear una tabla de pruebas:
CREATE TABLE tablaValores ( valor DECIMAL(3,2) )
Insertamos algunos valores a nuestra tabla:
INSERT INTO tablaValores VALUES( 1 ) , ( 2 ) , ( 3 ) , ( 4 ) , ( 5 )
Verificamos el contenido:
SELECT * FROM tablaValores
Ahora aplicamos una consulta con BETWEEN:
SELECT * FROM tablaValores WHERE valor BETWEEN 2 AND 4
Podemos observar que la consulta anterior es similar a la
siguiente:
Ahora agregaremos otros valores con decimales:
INSERT INTO tablaValores VALUES( 1.88 ) , ( 1.99 ) , ( 4.01 ) , ( 4.10 ) , ( 4.19 )
Ahora el contenido de nuestra tabla será:
SELECT * FROM tablaValores ORDER BY valor
Aplicamos nuevamente la consulta:
SELECT * FROM tablaValores WHERE valor BETWEEN 2 AND 4
Es obvio que 1.99 no es mayor igual que 2 y 4.01 no es
menor igual que 4, por lo tanto el resultado sigue siendo el mismo.
Pero si queremos que la
consulta extraiga también los valores con entero 4 con cualquier decimal por
valor, sin incluir el entero 5, no podemos utilizar BETWEEN:
SELECT * FROM tablaValores WHERE valor BETWEEN 2 AND 5 ORDER BY valor
Debemos utilizar >= y <
SELECT * FROM tablaValores WHERE valor >=2 AND valor < 5 ORDER BY valor
Al manejar tipos de
datos relacionados con fechas y horas, el comportamiento es parecido, tal y
como lo explique en el post FILTRAR
POR RANGO DE FECHAS.
El comportamiento del
BETWEEN es idéntico a
columna >= valor AND columna <= valor
y el de un NOT BETWEEN:
columna < valor AND columna > valor
SELECT * FROM tablaValores WHERE valor NOT BETWEEN 2 AND 4 ORDER BY valor
SALUDOS!
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE
0 comentarios:
Publicar un comentario