En este articulo hablaremos sobre cómo usar el operador SQL IN; le mostrare por qué querría usar el operador IN y cómo evitar algunos escollos asociados con NULL.
La condición SQL IN (a veces denominada operador IN) le permite probar fácilmente si una expresión coincide con algún valor en una lista de valores. Se utiliza para ayudar a reducir la necesidad de múltiples condiciones OR en una declaración SELECT, INSERT, UPDATE o DELETE.
Sintaxis operador SQL in
El operador SQL IN es una excelente manera de condensar y simplificar las condiciones de SQL WHERE. Si tiene varias condiciones or, entonces tiene sentido usar SQL IN.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
Ejemplo del operador SQL in
Para comparar una columna con varios valores, utilice el operador SQL IN
SELECT ID,Nombre, Apellido,
Correoelectrónico, AddressLine,
Ciudad,Cargo
FROM Empleado
where Ciudad in ('mexico','santiago')
Esto es similar a usar el operador OR. Es posible que haya hecho esto en el pasado. Aquí está la declaración equivalente usando OR:
SELECT ID, Nombre, Apellido, Correoelectrónico,
AddressLine, Ciudad, Cargo
FROM Empleado
WHERE Ciudad = 'mexico' OR Ciudad = 'santiago'
Ejemplo: uso de la condición SQL IN con valores numéricos
También puedo usar el operador SQL IN con otro tipo de datos, como enteros. En el siguiente ejemplo usaremos los Códigos.
SELECT ID, Nombre, Apellido,
Correoelectrónico, AddressLine,
Ciudad,Cargo
FROM Empleado
WHERE Ciudad in (10,15,20)
Ejemplo SQL IN y NULL
Una cosa que quiero señalar es que si su lista tiene valores nulos, puede obtener algunos resultados extraños, así que permítame mostrarle una consulta donde tenemos NULL y lo ejecuto.
SELECT ID,
Nombre,
Apellido,
Correoelectrónico,
AddressLine,
Ciudad,
Cargo
FROM Empleado
WHERE Ciudad IN ('mexico','santiago', NULL)
Ejemplo: uso de la condición SQL IN con el operador NOT
Finalmente, veamos cómo usar la condición IN con el operador NOT . El operador NOT se utiliza para negar una condición. Cuando usamos el operador NOT con la condición IN, creamos una condición NOT IN. Esto probará para ver si una expresión no está en una lista.
En este ejemplo, tenemos una tabla llamada productos con los siguientes datos:
ID | product_nombre | categoria ID |
---|---|---|
1 | Pera | 50 |
2 | Banana | 50 |
3 | Naranja | 50 |
4 | Manzana | 50 |
5 | Pan de molde | 75 |
6 | Jamón | 25 |
7 | kleenex | NULO |
Ingrese la siguiente instrucción SQL:
SELECT *
FROM productos
WHERE product_nombre NOT IN ('Pera', 'Banana', 'pan de molde');
Habrá 4 registros seleccionados. Estos son los resultados que deberías ver:
ID | product_nombre | categoria ID |
---|---|---|
3 | Naranja | 50 |
4 | Manzana | 50 |
6 | Jamón Loncheado | 25 |
7 | kleenex | NULO |
Este ejemplo devolvería todas las filas de la tabla de productos donde product_nombre no es Pera, Banana o Pan. A veces, es más eficiente enumerar los valores que no desea, en lugar de los valores que sí desea.
Es igual a la próxima instrucción SQL:
SELECT *
FROM productos
WHERE product_nombre <> 'Pera'
AND product_nombre <> 'Banana'
AND product_nombre <> 'pan de molde';
Como puede ver, la declaración equivalente se escribe utilizando condiciones AND en lugar de condiciones OR porque se niega la condición IN. Así que espero que haya disfrutado de este minuto SQL Server y pueda usar IN para ayudarlo a avanzar en sus técnicas de usar otra instrucción Select.
Conclusión
- El operador IN se utiliza para comparar un valor con una lista de valores posibles, que se especifica entre paréntesis y separados por comas.
- La lista de valores puede ser una lista de valores literales, una subconsulta o una combinación de ambos.
- El operador IN se utiliza comúnmente con valores de tipo cadena (por ejemplo, nombres de ciudades o estados) o valores numéricos (por ejemplo, identificadores de producto o números de cuenta).
- El operador IN es útil para simplificar consultas que contienen varias condiciones OR.
- El NOT IN se usa para traer los resultados excluyendo los valores de la lista.
- Al utilizar IN en SQL server puede mejorar la eficiencia de la consulta en comparación con el uso de varias condiciones OR separadas por operadores lógicos.
- Utilice el operador SQL IN para verificar si un valor está en un conjunto de valores.
- Usa el NOT operador para negar el IN operador, NOT IN.
- Utilice `IN` con una subconsulta para combinar dos consultas en una sola consulta.