Trucos Transact-SQL - Eliminación de WHERE.. =IN.=.

3 - Eliminación de WHERE.. =IN.=.

[editar]
Tutorial creado por Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=541
27 de Octubre de 2005
Supongamos que tenemos una consulta del tipo "Traer todos los B que tienen estado s igual a 1 ó 3". La idea es usar una función que nos de un valor que podamos distinguir como indicación de pertenencia al conjunto de valores requeridos. En vez de escribir:

select * from B where s in (1, 3)

escribir:

select * from B where (s - 1) * (s - 3) = 0

El truco es escribir un polinomio cuyas raíces sean los valores que queremos seleccionar. Si la columna es de otro tipo T, hay que buscar una función biyectiva de T a Z que nos codifique los valores del tipo T en números. El ejemplo típico es usar ascii() para columnas de tipo char, o datediff() para columnas de tipo datetime.

Si los valores a seleccionar son muchos, en vez de un polinomio puede ser preferible usar una función modular: por ejemplo, si quiero elegir los que tengan estado 1, 3, 5 ó 7, escribir where s % 2 = 1.

Otra opción (equivalente desde el punto de vista matemático) es fijarse si la representación en binario de los valores tiene algún patrón, y usar una expresión usando los operadores de bits.
[editar]

10 opiniones

Agradecimiento.

Interesante eh.
Como hacer los programas.

Todo los programas de sql con todo los programas de php,asp. Deben de ser mas complejas.
Buenisimo.

Felicito a los aportadores de este articulo, pero de igual manera me encantaria que lo ampliasen.
Aprendiendo trasact-sql.

Gracias

por favor quiero encontrar un libro o un tutorial de todo el lenguaje transat-sql

podria por favor colaborarme.
Genial.

Yo había construido una función para agrupar por horas, pero esto es mucho mejor, ya que los cálculos son rapidísimos. Gracias por la idea.
1 2 | siguiente >

Tutoriales relacionados con 'Trucos Transact-SQL'

Varios de los ejemplos aquí presentados usan tablas ''abstractas'' A y B. Las definiciones son:... Más »

Autor y licencia de 'Trucos Transact-SQL'


Tutorial de Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=541 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.