Guía rápida de sql BETWEEN
El operador BETWEEN nos sirve para seleccionar valores en un rango. Los valores pueden ser números, textos o datos.
Hay que tener en cuenta que este operador puede obtener diferentes resultados dependiendo de la BBDD con la que se este trabajando de este modo puede o no incluir los valores que se introducen como límites, o incluso solo tomar el primero y no el último. Por esta razón es interesante que se pruebe el funcionamiento antes de utilizarlo en un proyecto en desarrollo.
Su sintaxis es:
SELECT * FROM tabla WHERE columna BETWEEN valor_1 AND valor_2
Del mismo modo tenemos el operador NOT BETWEEN que nos selecciona los valores que no se encuentran en el rango elegido.
SELECT * FROM tabla WHERE columna BETWEEN valor_1 AND valor_2
Como siempre una vez que hemos visto su funcionamiento, vamos a realizar algunos ejemplos con la base de datos neptuno…
Por ejemplo tomemos la tabla productos para hacer búsquedas por rangos de precios…
Buscar todos los productos con precios comprendidos entre 10 y 15
SELECT NombreProducto, PrecioUnidad, UnidadesEnExistencia FROM producto WHERE PrecioUnidad BETWEEN 10 AND 15
Producto | Precio | Existencias |
Sirope de regaliz | 10 | 13 |
Bollos de Sir Rodney’s | 10 | 3 |
Crema de chocolate y nueces NuNuCa | 14 | 76 |
Queso gorgonzola Telino | 12.5 | 0 |
Cerveza Sasquatch | 14 | 111 |
Tallarines de Singapur | 14 | 26 |
Arenque salado | 12 | 95 |
Chocolate holandés | 12.75 | 15 |
Caracoles de Borgoña | 13.25 | 62 |
Cerveza Laughing Lumberjack | 14 | 52 |
Barras de pan de Escocia | 12.5 | 6 |
Cerveza Outback | 15 | 15 |
Caviar rojo | 15 | 101 |
Queso de soja Longlife | 10 | 4 |
Salsa verde original Frankfurter | 13 | 32 |
Ahora utilizando NOT BETWEEN vamos a hacer la misma consulta
SELECT NombreProducto, PrecioUnidad, UnidadesEnExistencia FROM producto WHERE PrecioUnidad NOT BETWEEN 10 AND 15
Producto | Precio | Existencias |
Té Dharamsala | 18 | 39 |
Cerveza tibetana Barley | 19 | 17 |
Especias Cajun del chef Anton | 22 | 53 |
Mezcla Gumbo del chef Anton | 21.35 | 0 |
Mermelada de grosellas de la abuela | 25 | 120 |
Peras secas orgánicas del tío Bob | 30 | 15 |
Salsa de arándanos Northwoods | 40 | 6 |
Buey Mishi Kobe | 97 | 29 |
Pez espada | 31 | 31 |
Queso Cabrales | 21 | 22 |
Queso Manchego La Pastora | 38 | 86 |
Algas Konbu | 6 | 24 |
Cuajada de judías | 23.25 | 35 |
Salsa de soja baja en sodio | 15.5 | 39 |
Postre de merengue Pavlova | 17.45 | 29 |
Cordero Alice Springs | 39 | 0 |
Langostinos tigre Carnarvon | 62.5 | 42 |
Pastas de té de chocolate | 9.2 | 25 |
Mermelada de Sir Rodney’s | 81 | 40 |
Pan de centeno crujiente estilo Gustaf’s | 21 | 104 |
Pan fino | 9 | 61 |
Refresco Guaraná Fantástica | 4.5 | 20 |
Ositos de goma Gumbär | 31.23 | 15 |
Chocolate Schoggi | 43.9 | 49 |
Col fermentada Rössle | 45.6 | 26 |
Salchicha Thüringer | 123.79 | 0 |
Arenque blanco del noroeste | 25.89 | 10 |
Queso Mascarpone Fabioli | 32 | 9 |
Queso de cabra | 2.5 | 112 |
Cerveza negra Steeleye | 18 | 20 |
Escabeche de arenque | 19 | 112 |
Salmón ahumado Gravad | 26 | 11 |
Vino Côte de Blaye | 263.5 | 17 |
Licor verde Chartreuse | 18 | 69 |
Carne de cangrejo de Boston | 18.4 | 123 |
Crema de almejas estilo Nueva Inglaterra | 9.65 | 85 |
Café de Malasia | 46 | 17 |
Azúcar negra Malacca | 19.45 | 27 |
Arenque ahumado | 9.5 | 5 |
Galletas Zaanse | 9.5 | 36 |
Regaliz | 20 | 10 |
Chocolate blanco | 16.25 | 65 |
Manzanas secas Manjimup | 53 | 20 |
Cereales para Filo | 7 | 38 |
Empanada de carne | 32.8 | 0 |
Empanada de cerdo | 7.45 | 21 |
Paté chino | 24 | 115 |
Gnocchi de la abuela Alicia | 38 | 21 |
Raviolis Angelo | 19.5 | 36 |
Raclet de queso Courdavault | 55 | 79 |
Camembert Pierrot | 34 | 19 |
Sirope de arce | 28.5 | 113 |
Tarta de azúcar | 49.3 | 17 |
Sandwich de vegetales | 43.9 | 24 |
Bollos de pan de Wimmer | 33.25 | 22 |
Salsa de pimiento picante de Luisiana | 21.05 | 76 |
Especias picantes de Luisiana | 17 | 4 |
Queso Gudbrandsdals | 36 | 26 |
Crema de queso Fløtemys | 21.5 | 26 |
Queso Mozzarella Giovanni | 34.8 | 14 |
Cerveza Klosterbier Rhönbräu | 7.75 | 125 |
Licor Cloudberry | 18 | 57 |
Como ya hemos dicho algunas veces lo interesante de las consultas es poder mezclar operadores y condiciones, de hecho vamos a suponer que queremos limitar aun más nuestra búsqueda, por ejemplo si queremos que ademas del precio el producto pertenezca a determinadas categorias:
SELECT NombreProducto, PrecioUnidad, UnidadesEnExistencia, IdCategoria FROM producto WHERE (PrecioUnidad BETWEEN 10 AND 15) AND IdCategoria IN (1,2,3)
Que nos daría como resultado:
Producto | Precio | Existencias | IdCategoria |
Sirope de regaliz | 10 | 13 | 2 |
Bollos de Sir Rodney’s | 10 | 3 | 3 |
Crema de chocolate y nueces NuNuCa | 14 | 76 | 3 |
Cerveza Sasquatch | 14 | 111 | 1 |
Chocolate holandés | 12.75 | 15 | 3 |
Cerveza Laughing Lumberjack | 14 | 52 | 1 |
Barras de pan de Escocia | 12.5 | 6 | 3 |
Cerveza Outback | 15 | 15 | 1 |
Salsa verde original Frankfurter | 13 | 32 | 2 |
Naturalmente y como de costumbre hay que decir que cuando se trata de cadenas y no de valores, los términos limitantes del BETWEEN deben de ir entre comillas simples ‘cadena’.