Sql in: Compara una columna con varias

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') 

sql in

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
1Pera50
2Banana50
3Naranja50
4Manzana50
5Pan de molde75
6Jamón 25
7kleenexNULO

 

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_nombrecategoria ID
3Naranja50
4Manzana50
6Jamón Loncheado25
7kleenexNULO

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.

Deja un comentario