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

#6 ulises
12/01/2005 - 20:38 | Informe spam
La columna tp debe ser creado con el mismo COLLATE que
tiene la columna clave de tabla.

Saludos,
Ulises

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
#7 Chente
12/01/2005 - 21:21 | Informe spam
No se como hacer eso, ¿me puedes ayudar por favor?.

Te comento que si yo creo la tabla de forma permante o sea no con el # de
temporal, me funciona a la perfección, pero lo que no quiero es empezar a
saturar de tablitas mi B.D.


Saludos.



"ulises" escribió en el mensaje
news:0da001c4f8de$447b0e80$
La columna tp debe ser creado con el mismo COLLATE que
tiene la columna clave de tabla.

Saludos,
Ulises

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
#8 ulises
12/01/2005 - 21:55 | Informe spam
Genera la sentencia de creación de "tabla", cuando lo
tengas verás que al final de la columna tendra algo como

clave varchar(x) COLLATE SQL_Latin1_General_CP850_CI_AS

toma ese valor para crear la tabla temporal

CREATE TABLE #tempo(tp varchar(2)
COLLATE SQL_Latin1_General_CP850_CI_AS )

Saludos,
Ulises

No se como hacer eso, ¿me puedes ayudar por favor?.

Te comento que si yo creo la tabla de forma permante o sea


no con el # de
temporal, me funciona a la perfección, pero lo que no


quiero es empezar a
saturar de tablitas mi B.D.


Saludos.



"ulises" escribió en el mensaje
news:0da001c4f8de$447b0e80$
La columna tp debe ser creado con el mismo COLLATE que
tiene la columna clave de tabla.

Saludos,
Ulises

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
#9 Chente
13/01/2005 - 20:32 | Informe spam
Creo que estoy ciego, eso donde lo veo???.

tengo:
SQL2K
SP3a.


Saludos




"ulises" escribió en el mensaje
news:073301c4f8e9$03e34170$
Genera la sentencia de creación de "tabla", cuando lo
tengas verás que al final de la columna tendra algo como

clave varchar(x) COLLATE SQL_Latin1_General_CP850_CI_AS

toma ese valor para crear la tabla temporal

CREATE TABLE #tempo(tp varchar(2)
COLLATE SQL_Latin1_General_CP850_CI_AS )

Saludos,
Ulises

No se como hacer eso, ¿me puedes ayudar por favor?.

Te comento que si yo creo la tabla de forma permante o sea


no con el # de
temporal, me funciona a la perfección, pero lo que no


quiero es empezar a
saturar de tablitas mi B.D.


Saludos.



"ulises" escribió en el mensaje
news:0da001c4f8de$447b0e80$
La columna tp debe ser creado con el mismo COLLATE que
tiene la columna clave de tabla.

Saludos,
Ulises

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
#10 Enrique Albert
13/01/2005 - 20:51 | Informe spam
Hola,

Con SQL2k puedes crear funciones de usuario que devuelvan un tabla,
esto es lo que necesitas en tu consulta en tu " in ( select ..)"

Crea una funcion que tenga un parametro de entrada que sea tu cadena de
diferente valores separados por comas, por ejemplo. La funcion deberia
devolver una tabla, pongamos que la funcion se llama fn_getValores; tu
script deberia ser algo como:

select clave from tabla where left(clave, 2) in (select valor from
dbo.fn_getValores(@cadena))

Un par de cosas:
He supuesto que la funcion devuelve una tabla donde el primer campo se
llama valor.
El trozo de codigo donde generas la tabla temporal es un buen candidato
para formar el cuerpo de tu funcion.

Mira los BOL por funciones de usuario. Las funciones son muy utiles y
si me preguntan, es la gran diferencia entre un SQL7 y un SQL2k para un
programador.

Saludos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida