in()

12/01/2005 - 18:22 por Chente | Informe spam
Que tal foro, tengo la siguiente duda, en teoria esto me debería funcionar,
pero no es así, alguien me puede ayudar a solucionarlo???


declare @cadena varchar(30)

set @cadena = '''GR'', ''HO'', ''AB'''

select @cadena

select clave from tabla
where left(clave, 2) in (@cadena)
-

Gracias y saludos.

Vicente López.

Preguntas similare

Leer las respuestas

#1 Manuel Vera
12/01/2005 - 18:51 | Informe spam
Como lo intentas no puedes.

Debes convertir todo a texto y procesar el texto

EXECUTE( 'select clave from tabla' +
' where left(clave, 2) in (' + @cadena + ')' )

Hay un sp para eso tambien, creo que es sp_execsql o algo parecido.

Saludos
MV


"Chente" <foro[@]ausa.com.mx> wrote in message
news:%230PLQwM%
Que tal foro, tengo la siguiente duda, en teoria esto me debería


funcionar,
pero no es así, alguien me puede ayudar a solucionarlo???


declare @cadena varchar(30)

set @cadena = '''GR'', ''HO'', ''AB'''

select @cadena

select clave from tabla
where left(clave, 2) in (@cadena)
-

Gracias y saludos.

Vicente López.
Respuesta Responder a este mensaje
#2 ulises
12/01/2005 - 19:17 | Informe spam
No, en teoría no te debería funcionar, el select tomará la
variable @cadena como la que debe usar para hacer el filtro
que creo que no es lo que buscas, si tu número de valores
en la lista es reducido o fijo podrías pasarlos como
parámetros independientes y ponerlos como ( @p1, @p2,...),
si es muy variable y pueden ser muy grandes podrías
grabarlos previamente en una tabla y luego usar el IN
contra un SELECT contra esa tabla ó usar sql dinámico (con
los riesgos que implica) formar la cadena y ejecutarla con
sp_executesql.

Saludos,
Ulises

Que tal foro, tengo la siguiente duda, en teoria esto me


debería funcionar,
pero no es así, alguien me puede ayudar a solucionarlo???


declare @cadena varchar(30)

set @cadena = '''GR'', ''HO'', ''AB'''

select @cadena

select clave from tabla
where left(clave, 2) in (@cadena)
-

Gracias y saludos.

Vicente López.




.

Respuesta Responder a este mensaje
#3 Chente
12/01/2005 - 20:01 | Informe spam
pense que se habia perdido la respuesta pero me di cuenta que lo habia
respondido al remitente, asi que va de nuevo.

-

Gracias por responder Manuel, Eso que me dices es precisamente lo que no
quiero hacer, creo que tendre que ayudarme con una pequeña tabla y ahi poner
la lista para que en el select lo pueda hacer de la siguiente manera.

select clave from tabla
where left(clave, 2) in (select clave from tablita)


Si alguien puede dar otra solucion se los agradecere bastante.


Saludos.



"Manuel Vera" escribió en el mensaje
news:eFpsb5M%
Como lo intentas no puedes.

Debes convertir todo a texto y procesar el texto

EXECUTE( 'select clave from tabla' +
' where left(clave, 2) in (' + @cadena + ')' )

Hay un sp para eso tambien, creo que es sp_execsql o algo parecido.

Saludos
MV


"Chente" <foro[@]ausa.com.mx> wrote in message
news:%230PLQwM%
> Que tal foro, tengo la siguiente duda, en teoria esto me debería
funcionar,
> pero no es así, alguien me puede ayudar a solucionarlo???
>
>
> declare @cadena varchar(30)
>
> set @cadena = '''GR'', ''HO'', ''AB'''
>
> select @cadena
>
> select clave from tabla
> where left(clave, 2) in (@cadena)
> -
>
> Gracias y saludos.
>
> Vicente López.


Respuesta Responder a este mensaje
#4 Chente
12/01/2005 - 20:05 | Informe spam
declare @cadena varchar(30)
declare @valor char(2)
declare @cont int

select @cadena = m6tp from ctpermiso --donde m6tp contiene GRHO
where uslogin = 'vlopez'

select @cadena
set @cont = 1

CREATE TABLE #tempo(tp varchar(2))

while @cont < len(@cadena)
begin
set @valor = substring(@cadena,@cont,2)
INSERT INTO #tempo VALUES (@valor)
set @cont = @cont + 2
end

SELECT * FROM #tempo

-
Hasta aqui todo bien, aho cuando corro esto me marca un error.

select clave from tabla
where left(clave, 2) in (select tp from #tempo)

Servidor: mensaje 446, nivel 16, estado 9, línea 1
No se puede resolver el conflicto de intercalación para el operador equal
to.

-
Pero si lo correo de esta manera no hay problema.

select clave from tabla
where left(clave, 2) in ('GR', 'HO')



Ya me estoy volviendo loco.



ayuda por favor.


Saludos.

Vicente López.



"Chente" <foro[@]ausa.com.mx> escribió en el mensaje
news:%230PLQwM%
Que tal foro, tengo la siguiente duda, en teoria esto me debería


funcionar,
pero no es así, alguien me puede ayudar a solucionarlo???


declare @cadena varchar(30)

set @cadena = '''GR'', ''HO'', ''AB'''

select @cadena

select clave from tabla
where left(clave, 2) in (@cadena)
-

Gracias y saludos.

Vicente López.




Respuesta Responder a este mensaje
#5 Chente
12/01/2005 - 20:08 | Informe spam
Gracias Ulises, después de haber enviado el primer post, me di cuenta que la
teoria que yo tenia estaba mal, :(, por eso me puse a crear una tabla
temporal al vuelo y agregar la lista pero no funciona tampoco, acabo de
enviar el post, haber si le puedes hecahr un ojo y decirme que estoy
haciendo mal.


Gracias.

Vicente López.


"ulises" escribió en el mensaje
news:066001c4f8d2$eae19750$
No, en teoría no te debería funcionar, el select tomará la
variable @cadena como la que debe usar para hacer el filtro
que creo que no es lo que buscas, si tu número de valores
en la lista es reducido o fijo podrías pasarlos como
parámetros independientes y ponerlos como ( @p1, @p2,...),
si es muy variable y pueden ser muy grandes podrías
grabarlos previamente en una tabla y luego usar el IN
contra un SELECT contra esa tabla ó usar sql dinámico (con
los riesgos que implica) formar la cadena y ejecutarla con
sp_executesql.

Saludos,
Ulises

Que tal foro, tengo la siguiente duda, en teoria esto me


debería funcionar,
pero no es así, alguien me puede ayudar a solucionarlo???


declare @cadena varchar(30)

set @cadena = '''GR'', ''HO'', ''AB'''

select @cadena

select clave from tabla
where left(clave, 2) in (@cadena)
-

Gracias y saludos.

Vicente López.




.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida