Cómo hacer una variable con una lista nvarchar

02/10/2009 - 14:21 por DT | Informe spam
Hola a todos

Tengo el siguiente sql.
Select *
from tabla
Where nombre IN ('Carlos', 'Maria')

Ahora intento hacer esto:
Declare @nombres nvarchar(100)
Set @nombres = 'Carlos, Maria'


Select *
from tabla
Where nombre IN @nombre

Ningún resuldato cuál es el problema???
Gracias por sus consejos!
(sql Server 2005)

Preguntas similare

Leer las respuestas

#11 Alejandro Mesa
04/10/2009 - 20:24 | Informe spam
Carlos,

Hombre, te levantastes con ganas de profundizar en este tema, cosa que me
parece muy bien, o sera que te acostastes pensando en esto.

Yo no tengo acceso al codigo interno usado por sql server, solo se que esta
hecho con en C++, y de verdad necesito tiempo para dijerir tu planteamiento,
que en un principio me parece logico.

Recuerda que las CTEs pueden ser mas complejas, pues podemos usar varios
meimbros ancla (anchor) y varios meimbros recursivos. Tambien que en cada
pasada solo podemos accesar a los resultados de la ultima pasada, lo cual
como que se me asemeja al acceso de la pila cuando usamos recursividad o
llamada de una funcion a si misma.

Provare tu funcion en cuando tenga tiempo y te dejare saber como me fue y
como se compara con otros metodos. en este momento estoy terminando los
slided para una presentacion sobre los planes de ejecucion y su re-uso.

Tu actitud me parece muy positiva.

Saludos,
Alejandro Mesa


"Carlos M. Calvelo" wrote:

Mostrar la cita
#12 Carlos M. Calvelo
04/10/2009 - 22:29 | Informe spam
Hola Alejandro,

On 4 okt, 20:24, Alejandro Mesa
wrote:
Mostrar la cita
Soy consciente de ello. Claro que lo que he explicado, con lo de
los resultados intermedios, es solo el principio. Lo he hecho solo
a un nivel. Es solo la base de la estrategia que se puede ampliar
para varios niveles, cada uno con sus resultados intermedios.

Mostrar la cita
Hombre, tampoco es que yo te quiera poner a trabajar! Simplemente
he compartido la idea. Que no es nada nuevo, ni mio.

En cuanto a eficiencia no te molestes. Puedes controlar que sí
funciona y ya está. Solo he tratado de dejar ver que la
especificación recursiva de un CTE es traducible a un proceso
iterativo, sin preocuparme para nada de la eficiencia. Pero bien
implementado puede ser igual de eficiente en cuanto a tiempo y más
eficiente en cuanto a espacio (memoria).
La esencia es que con un input lo suficientemente grande un proceso
recursivo no tendrá suficiente memoria para terminar debido al
crecimiento de la pila (stack). Ese problema desaparece con un
proceso iterativo.

Ademas el ejemplo de convertir una cadena a una tabla no me parece
bueno para analizar esto. Mejor algo con estructura de árbol, que es
recursiva por naturaleza. Habría que preparar un ejemplo mejor.


Mostrar la cita
Pues suerte con ello!

Mostrar la cita
Mi actitud es siempre positiva. :)

Saludos,
Carlos
#13 DT
05/10/2009 - 13:45 | Informe spam
Gracias a todos por su ayuda.
Lo he resulto utilizado las tablas temporales

Muchas gracias :)

"Carlos M. Calvelo" wrote in message
news:
Hola Alejandro,

On 4 okt, 20:24, Alejandro Mesa
wrote:
Mostrar la cita
Soy consciente de ello. Claro que lo que he explicado, con lo de
los resultados intermedios, es solo el principio. Lo he hecho solo
a un nivel. Es solo la base de la estrategia que se puede ampliar
para varios niveles, cada uno con sus resultados intermedios.

Mostrar la cita
Hombre, tampoco es que yo te quiera poner a trabajar! Simplemente
he compartido la idea. Que no es nada nuevo, ni mio.

En cuanto a eficiencia no te molestes. Puedes controlar que sí
funciona y ya está. Solo he tratado de dejar ver que la
especificación recursiva de un CTE es traducible a un proceso
iterativo, sin preocuparme para nada de la eficiencia. Pero bien
implementado puede ser igual de eficiente en cuanto a tiempo y más
eficiente en cuanto a espacio (memoria).
La esencia es que con un input lo suficientemente grande un proceso
recursivo no tendrá suficiente memoria para terminar debido al
crecimiento de la pila (stack). Ese problema desaparece con un
proceso iterativo.

Ademas el ejemplo de convertir una cadena a una tabla no me parece
bueno para analizar esto. Mejor algo con estructura de árbol, que es
recursiva por naturaleza. Habría que preparar un ejemplo mejor.


Mostrar la cita
Pues suerte con ello!

Mostrar la cita
Mi actitud es siempre positiva. :)

Saludos,
Carlos
#14 Carlos M. Calvelo
05/10/2009 - 23:04 | Informe spam
Hola DT,

On 5 okt, 13:45, "DT" wrote:
Mostrar la cita
Y todo lo que te hemos hecho leer para eso! :-)

Mostrar la cita
De nada hombre! (supongo que también en nombre de Alejandro y Julio)

Carlos
#15 Alejandro Mesa
06/10/2009 - 14:58 | Informe spam
Carlos,

Mostrar la cita
Me alegra que el OP pueda dar solucion a su problema, pero en este caso
vemos el tiempo que se hubiese podido ahorrar si su especificacion hubiese
sido mas clara desde un principio.

Casi siempre este tipo de problema se presenta con aplicaciones clientes,
por ejemplo cuando usamos parametros multi-valores en Reporting Services. Yo
no hubiese gastado mi tiempo en tocar el tema si desde un principio el OP
hubiese aclarado que la lista es creada manualmente en el lado del servidor.

Menos mal que el intercambio contigo siempre es ameno y productivo. :)

AMB



"Carlos M. Calvelo" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida