English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operadores IN & BETWEEN de SQL

En este tutorial, aprenderá cómo usar los operadores IN y BETWEEN junto con la cláusula WHERE.

Uso de condiciones de rango y membresía

En el capítulo anterior, aprendimos cómo combinar múltiples condiciones utilizando los operadores AND y OR. Sin embargo, a veces esto no es suficiente, por ejemplo, si debe verificar valores que se encuentran en un rango o conjunto de valores.

Aquí se presentan los operadores IN y BETWEEN, que le permiten definir un rango exclusivo o un conjunto de valores, en lugar de condiciones combinadas por separado.

Operador IN

El operador IN es un operador lógico, utilizado para verificar si un valor específico existe en un conjunto de valores. Su sintaxis básica se puede presentar de la siguiente manera:

SELECT column_list FROM table_name
WHERE column_name IN (value)1, valor1,...);

Aquí,column_listes la columna de la tabla de base de datos de la que desea obtener el valor/del campoNombre,por ejemploname,age,countryetc. Bueno, veamos algunos ejemplos.

Considerando que en nuestra base de datos tenemos unaemployeesLa tabla, que tiene los siguientes registros:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |
+--------+--------------+------------+--------+---------+

La siguiente consulta SQL solo devolverádept_idPara1o3de los empleados.

Ejemplo * FROM employees
WHERE dept_id IN (1, 3);

Después de ejecutar la consulta, obtendrá los siguientes resultados:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Del mismo modo, puede usar el operador NOT IN, que es completamente opuesto al operador IN. La siguiente consulta SQL devolverá a los empleados que no estándept_idno1o3de los empleados.

Ejemplo * FROM employees
WHERE dept_id NOT IN (1, 3);

Después de ejecutar la consulta, esta vez obtendrá los siguientes resultados:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt | 2001-05-01 |   5000 |       4 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+

Operador BETWEEN

Si el valor de una columna cae dentro de un rango específico, a veces desea seleccionar una fila. Este tipo de condición es común al manejar datos numéricos.

Para ejecutar consultas basadas en esta condición, puede utilizar el operador BETWEEN. Es un operador lógico que le permite especificar el rango a probar, como se muestra a continuación:

SELECT column1_name, column2_name, columnN_name FROM table_name WHERE column_name BETWEEN min_value AND max_value;

Vamos a basarnos enEmpleados (employees)Condiciones de rango en la tabla y ejecutar la consulta.

Definir el rango numérico

La siguiente consulta SQL solo devolveráemployeesLas tablas con salarios en7000 hasta9000 entre los empleados.

Ejemplo * FROM employees WHERE salary BETWEEN 7000 AND 9000;

Después de ejecutar, obtendrá el siguiente resultado:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Definir el rango de fechas

Al usar el operador BETWEEN con valores de fecha o tiempo, utilice la función CAST() para convertir estos valores explícitamente al tipo de datos necesario para obtener los mejores resultados. Por ejemplo, si se compara con DATE utilizando como “ 2016-12-31”y otros strings de ese tipo, conviértalos en DATE como se muestra a continuación:

La siguiente consulta SQL selecciona2006Año1Mes1Día (es decir, “ 2006-01-01”) hasta2016Año12Mes31Día (es decir, “ 2016-12-31)之间雇用的所有雇员:

Ejemplo * FROM employees WHERE hire_date
BETWEEN CAST('2006-01-01AS DATE) AND CAST('2016-12-31AS DATE);

Después de ejecutar la consulta, obtendrá los siguientes resultados:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |
+--------+--------------+------------+--------+---------+

00 |    NULL |

Definir un rango de cadena

Ejemplo * FROM employees
WHERE emp_name BETWEEN 'O' AND 'Z';

Después de ejecutar, obtendrá el siguiente resultado:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+