Social Icons

twitter facebook google plus linkedin

miércoles, 4 de julio de 2012

Simplificando la vida con IN y T-SQL en SQL Server

¿Te complicas mucho la existencia usando operadores lógicos en las consultas a la base de datos? Lo mas probable, es que si lo hagas (Bueno, sino te complica, esto igual te servirá).

El operador OR siempre devolverá un valor verdadero, siempre y cuando uno de sus argumentos sea verdadero.  Se utiliza como predicado del WHERE.  Por ejemplo:

SELECT * FROM MiTabla WHERE Campo1 = 1 OR Campo1 = 2

Simple, ¿no? Ahora que pasaría si tuviera que agregar más OR a mi consulta:

SELECT * FROM MiTabla WHERE Campo1 = 1 OR Campo1 = 2 OR Campo1 = 3 OR Campo1 = 5 OR Campo1 = 10 OR Campo1 = 15 OR Campo1 = 100

Se complica un poco el panorama y queda complicado para la lectura. Para solucionar esta problemática, haremos uso de IN, que, justamente, sirve para simplificar el uso de OR.  El modo de uso es sencillo:

bla bla blaa WHERE Campo1 IN(valor1, valor2, valor3, valorn)

Este ejemplo fue realizado con la base de datos AdventureWorks:

-- Consulta usando OR
SELECT
*
FROM
[Sales].[SalesPerson]
WHERE
[Bonus] = 4100 OR [Bonus] = 2000 OR [Bonus] = 5000 OR [Bonus] = 6700 OR [Bonus] = 3550
ORDER BY
[Bonus] DESC

-- Consulta usando IN
SELECT
*
FROM
[Sales].[SalesPerson]
WHERE
[Bonus] IN(4100,2000,5000,6700,3550)
ORDER BY
[Bonus] DESC


Saludos!