SQL BETWEENOperadores


El operador BETWEEN selecciona valores dentro de un rango de datos entre dos valores. Estos valores pueden ser numéricos, de texto o de fecha.

Sintaxis de SQL BETWEEN

SELECT column1, column2, ...
FROM table_name
WHERE column BETWEEN value1 AND value2;

Descripción de parámetros:

  • column1, column2, ...: nombres de los campos a seleccionar; pueden ser varios campos. Si no se especifican nombres de campos, se seleccionarán todos los campos.
  • table_name: nombre de la tabla a consultar.
  • column: nombre del campo a consultar.
  • value1: valor inicial del rango.
  • value2: valor final del rango.


Base de datos de demostración

En este tutorial, usaremos la base de datos de muestra EJEMPLO.

A continuación se muestran los datos de la tabla "Websites":

mysql> SELECT * FROM Websites;
+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  1 | Google        | https://www.google.cm/    |     1 | USA     |
|  2 | 淘宝          | https://www.taobao.com/   |    13 | CN      |
|  3 | Ejemplo       | http://www.example.com/    |  5000 | USA     |
|  4 | 微博           | http://weibo.com/         |    20 | CN      |
|  5 | Facebook      | https://www.facebook.com/ |     3 | USA     |
|  7 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+


Ejemplo del operador BETWEEN

La siguiente declaración SQL selecciona todos los sitios web cuyo alexa esté entre 1 y 20:

Ejemplo

SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;

Resultado de la ejecución:



Ejemplo del operador NOT BETWEEN

Para mostrar los sitios web que no estén en el rango del ejemplo anterior, use NOT BETWEEN:

Ejemplo

SELECT * FROM Websites
WHERE alexa NOT BETWEEN 1 AND 20;

Resultado de la ejecución:



Ejemplo del operador BETWEEN con IN

La siguiente declaración SQL selecciona todos los sitios web cuyo alexa esté entre 1 y 20 pero cuyo country no sea USA ni IND:

Ejemplo

SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND country NOT IN ('USA', 'IND');

Resultado de la ejecución:



Ejemplo del operador BETWEEN con valores de texto

La siguiente declaración SQL selecciona todos los sitios web cuyo name comience con una letra entre 'A' y 'H':

Ejemplo

SELECT * FROM Websites
WHERE name BETWEEN 'A' AND 'H';

Resultado de la ejecución:



Ejemplo del operador NOT BETWEEN con valores de texto

La siguiente declaración SQL selecciona todos los sitios web cuyo name no comience con una letra entre 'A' y 'H':

Ejemplo

SELECT * FROM Websites
WHERE name NOT BETWEEN 'A' AND 'H';

Resultado de la ejecución:



Tabla de ejemplo

A continuación se muestran los datos de la tabla de registros de acceso al sitio web "access_log", donde:

  • aid:es el id de autoincremento.
  • site_ides el id del sitio web correspondiente en la tabla websites.
  • countes el número de visitas.
  • date:es la fecha de acceso.
mysql> SELECT * FROM access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set (0.00 sec)

El archivo SQL de la tabla access_log utilizado en este tutorial:access_log.sql。



Ejemplo del operador BETWEEN con valores de fecha

La siguiente declaración SQL selecciona todos los registros de acceso cuya fecha esté entre '2016-05-10' y '2016-05-14':

Ejemplo

SELECT * FROM access_log
WHERE date BETWEEN '2016-05-10' AND '2016-05-14';

Resultado de la ejecución:


lamp

Tenga en cuenta que el operador BETWEEN puede producir resultados diferentes en distintas bases de datos.
En algunas bases de datos, BETWEEN selecciona campos entre dos valores pero excluye los dos valores de prueba.
En algunas bases de datos, BETWEEN selecciona campos entre dos valores e incluye ambos valores de prueba.
En algunas bases de datos, BETWEEN selecciona campos entre dos valores e incluye el primer valor de prueba pero no incluye el último.

Por lo tanto, verifique cómo maneja su base de datos el operador BETWEEN.

Otras extensiones