pasar a int

26/07/2004 - 12:52 por kike | Informe spam
hola:
quiero hacer una select con una where por id tal que asi:

SELECT * FROM tblejemplo
WHERE id_tblejemplo in(13,16,64,68)

bien el problema es que se lo paso por parametro en un string

declare @id_tblejemplo varchar(250)
set @id_tblejemplo='160,140,178'

select * from tblejemplo
where id_tblejemplo in(@id_tblejemplo)


He logrado hacerlo utilizando el sp_executesql del SQLServer y poner
condiciones variables pero bueno por si alguien tiene otra idea o forma de
hacerlo..que la pastee aqui :)

Un Saludo
kike
 

Leer las respuestas

#1 Carlos Sacristan
26/07/2004 - 13:17 | Informe spam
Bueno, puedes probar a pasar los datos de esa forma a otra que fuera un
conjunto de resultados y entonces ya sí realizar la sentencia SQL (sin usar
SQL dinámico). Para conseguirlo, echa un vistazo a
http://www.winnetmag.com/SQLServer/...1071.html, ahí
te explica cómo implementar una función de usuario que hace lo mismo que el
SPLIT de VB.

Luego, la sentencia simplemente sería:

SELECT a.* FROM tblejemplo a INNER JOIN (SELECT * FROM
dbo.fn_split(@id_tblejemplo, ',')) b ON a.id_tblejemplo=b.value

o

SELECT * FROM tblejemplo WHERE id_tblejemplo IN (SELECT value FROM
dbo.fn_split(@id_tblejemplo, ','))

De todos modos, comprueba qué es más eficiente con el plan de
ejecución...


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"kike" escribió en el mensaje
news:
hola:
quiero hacer una select con una where por id tal que asi:

SELECT * FROM tblejemplo
WHERE id_tblejemplo in(13,16,64,68)

bien el problema es que se lo paso por parametro en un string

declare @id_tblejemplo varchar(250)
set @id_tblejemplo='160,140,178'

select * from tblejemplo
where id_tblejemplo in(@id_tblejemplo)


He logrado hacerlo utilizando el sp_executesql del SQLServer y poner
condiciones variables pero bueno por si alguien tiene otra idea o forma de
hacerlo..que la pastee aqui :)

Un Saludo
kike




Preguntas similares