URGENTE¿Comparar con los ultimos 4 caracteres?

29/03/2007 - 23:54 por Diego | Informe spam
SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as Descripción
FROM [PMM_EQUI], [PMV_STAT]
WHERE [PMM_EQUI].[DDSTTXT]=[PMV_STAT].[CDTXT04]

Quiero que en esta consulta solo me compare con los ultimo 4 caracteres de
este campo [PMM_EQUI].[DDSTTXT]

Espero su ayuda

Preguntas similare

Leer las respuestas

#6 Diego
31/03/2007 - 19:14 | Informe spam
El primero es [PMM_EQUI].[DDSTTXT] char(40), y el segundo es
[PMV_STAT].[CDTXT04] un char(4) estan declarados asi por que el
primer campo permite una cadena de mas de un status, sin embargo en la
segunda tabla solo estan los codigos que puede tomar por ejemplo

En la primera tabla

Equipo Status
1 MONT NOAC PTBO

Y en la segunda tabla

Cod Status Descripción
1 MONT Montado
2 NOAC No activo
3 PTBO Petición de borrado

El resultado deberia ser asi

Equipo Status
1 Petición de borrado


Osea que solo compare con los ultimos 4 cararacteres

Muchas Gracias espero haber sido explicito

Saludos

Diego

"Alejandro Mesa" wrote:

Diego,

Que cual es la estructura de las tablas involucradas, tipo de data de cada
columna, etc.


AMB

"Diego" wrote in message
news:
> No entendi tu pregunta, sera que me la volves a hacer por favor
>
>
>
>
> "Alejandro Mesa" wrote:
>
>> Diego,
>>
>> Crees que puedas postear la estructura de las tablas, data de ejemplo y
>> resultados esperados?. De esa forma podemos recrear el problema.
>>
>> AMB
>>
>>
>> "Diego" wrote:
>>
>> > Disculpa una vez mas , la estoy ejecutando de la siguiente forma pero
>> > no me
>> > esta trayendo ningún registro???
>> > Por que )?????
>> > que estoy haciendo mal.
>> >
>> > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> > Descripción
>> > FROM [PMM_EQUI], [PMV_STAT]
>> > WHERE right([PMM_EQUI].[DDSTTXT], 4)=[PMV_STAT].[CDTXT04]
>> > go
>> >
>> >
>> > Espero tu respuesta
>> >
>> > Diego Román
>> >
>> > "Alejandro Mesa" wrote:
>> >
>> > > Diego,
>> > >
>> > > Lee sobre la funcion RIGHT en los libros en linea.Tambien lee sobre
>> > > el
>> > > operador LIKE.
>> > >
>> > >
>> > > WHERE [PMM_EQUI].[DDSTTXT] like '%' + [PMV_STAT].[CDTXT04]
>> > > go
>> > >
>> > >
>> > > WHERE right([PMM_EQUI].[DDSTTXT], 4) = [PMV_STAT].[CDTXT04]
>> > > go
>> > >
>> > > Cualquiera de las dos opciones hara que SQL Server no utilize el
>> > > histograma
>> > > que almacena estadisticas de distribucion de los valores de las
>> > > columnas que
>> > > conforman la llave, en caso de existir algun indice por las columnas
>> > > que
>> > > participan en la expresion. Esto se debe a que estamos manipulando
>> > > las
>> > > columnas en la expresion que aparece en la clausula "where".
>> > >
>> > > AMB
>> > >
>> > >
>> > > "Diego" wrote in message
>> > > news:
>> > > > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> > > > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> > > > Descripción
>> > > > FROM [PMM_EQUI], [PMV_STAT]
>> > > > WHERE [PMM_EQUI].[DDSTTXT]=[PMV_STAT].[CDTXT04]
>> > > >
>> > > > Quiero que en esta consulta solo me compare con los ultimo 4
>> > > > caracteres
>> > > > de
>> > > > este campo [PMM_EQUI].[DDSTTXT]
>> > > >
>> > > > Espero su ayuda
>> > >
>> > >
>> > >



Respuesta Responder a este mensaje
#7 Diego
31/03/2007 - 19:14 | Informe spam
El primero es [PMM_EQUI].[DDSTTXT] char(40), y el segundo es
[PMV_STAT].[CDTXT04] un char(4) estan declarados asi por que el
primer campo permite una cadena de mas de un status, sin embargo en la
segunda tabla solo estan los codigos que puede tomar por ejemplo

En la primera tabla

Equipo Status
1 MONT NOAC PTBO

Y en la segunda tabla

Cod Status Descripción
1 MONT Montado
2 NOAC No activo
3 PTBO Petición de borrado

El resultado deberia ser asi

Equipo Status
1 Petición de borrado


Osea que solo compare con los ultimos 4 cararacteres

Muchas Gracias espero haber sido explicito

Saludos

Diego


"Alejandro Mesa" wrote:

Diego,

Que cual es la estructura de las tablas involucradas, tipo de data de cada
columna, etc.


AMB

"Diego" wrote in message
news:
> No entendi tu pregunta, sera que me la volves a hacer por favor
>
>
>
>
> "Alejandro Mesa" wrote:
>
>> Diego,
>>
>> Crees que puedas postear la estructura de las tablas, data de ejemplo y
>> resultados esperados?. De esa forma podemos recrear el problema.
>>
>> AMB
>>
>>
>> "Diego" wrote:
>>
>> > Disculpa una vez mas , la estoy ejecutando de la siguiente forma pero
>> > no me
>> > esta trayendo ningún registro???
>> > Por que )?????
>> > que estoy haciendo mal.
>> >
>> > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> > Descripción
>> > FROM [PMM_EQUI], [PMV_STAT]
>> > WHERE right([PMM_EQUI].[DDSTTXT], 4)=[PMV_STAT].[CDTXT04]
>> > go
>> >
>> >
>> > Espero tu respuesta
>> >
>> > Diego Román
>> >
>> > "Alejandro Mesa" wrote:
>> >
>> > > Diego,
>> > >
>> > > Lee sobre la funcion RIGHT en los libros en linea.Tambien lee sobre
>> > > el
>> > > operador LIKE.
>> > >
>> > >
>> > > WHERE [PMM_EQUI].[DDSTTXT] like '%' + [PMV_STAT].[CDTXT04]
>> > > go
>> > >
>> > >
>> > > WHERE right([PMM_EQUI].[DDSTTXT], 4) = [PMV_STAT].[CDTXT04]
>> > > go
>> > >
>> > > Cualquiera de las dos opciones hara que SQL Server no utilize el
>> > > histograma
>> > > que almacena estadisticas de distribucion de los valores de las
>> > > columnas que
>> > > conforman la llave, en caso de existir algun indice por las columnas
>> > > que
>> > > participan en la expresion. Esto se debe a que estamos manipulando
>> > > las
>> > > columnas en la expresion que aparece en la clausula "where".
>> > >
>> > > AMB
>> > >
>> > >
>> > > "Diego" wrote in message
>> > > news:
>> > > > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> > > > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> > > > Descripción
>> > > > FROM [PMM_EQUI], [PMV_STAT]
>> > > > WHERE [PMM_EQUI].[DDSTTXT]=[PMV_STAT].[CDTXT04]
>> > > >
>> > > > Quiero que en esta consulta solo me compare con los ultimo 4
>> > > > caracteres
>> > > > de
>> > > > este campo [PMM_EQUI].[DDSTTXT]
>> > > >
>> > > > Espero su ayuda
>> > >
>> > >
>> > >



Respuesta Responder a este mensaje
#8 Alejandro Mesa
31/03/2007 - 19:22 | Informe spam
Diego,

Me temia que estarias usando CHAR. Cuando se usa una columna de tipo CHAR,
SQL Server rellena con espacios a la derecha para completar la longitud
especificada. Si vemos el ejemplo que posteastes:

"MONT NOAC PTBO "

por lo que RIGHT([DDSTTXT], 4) seria " ", osea una cadena de cuatro
espacios.

has lo sgte:

right(rtrim(cast([PMM_EQUI].[DDSTTXT] as varchar(40))), 4) =
[PMV_STAT].[CDTXT04]


AMB


"Diego" wrote in message
news:

El primero es [PMM_EQUI].[DDSTTXT] char(40), y el segundo es
[PMV_STAT].[CDTXT04] un char(4) estan declarados asi por que el
primer campo permite una cadena de mas de un status, sin embargo en la
segunda tabla solo estan los codigos que puede tomar por ejemplo

En la primera tabla

Equipo Status
1 MONT NOAC PTBO

Y en la segunda tabla

Cod Status Descripción
1 MONT Montado
2 NOAC No activo
3 PTBO Petición de borrado

El resultado deberia ser asi

Equipo Status
1 Petición de borrado


Osea que solo compare con los ultimos 4 cararacteres

Muchas Gracias espero haber sido explicito

Saludos

Diego


"Alejandro Mesa" wrote:

Diego,

Que cual es la estructura de las tablas involucradas, tipo de data de
cada
columna, etc.


AMB

"Diego" wrote in message
news:
> No entendi tu pregunta, sera que me la volves a hacer por favor
>
>
>
>
> "Alejandro Mesa" wrote:
>
>> Diego,
>>
>> Crees que puedas postear la estructura de las tablas, data de ejemplo
>> y
>> resultados esperados?. De esa forma podemos recrear el problema.
>>
>> AMB
>>
>>
>> "Diego" wrote:
>>
>> > Disculpa una vez mas , la estoy ejecutando de la siguiente forma
>> > pero
>> > no me
>> > esta trayendo ningún registro???
>> > Por que )?????
>> > que estoy haciendo mal.
>> >
>> > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> > Descripción
>> > FROM [PMM_EQUI], [PMV_STAT]
>> > WHERE right([PMM_EQUI].[DDSTTXT], 4)=[PMV_STAT].[CDTXT04]
>> > go
>> >
>> >
>> > Espero tu respuesta
>> >
>> > Diego Román
>> >
>> > "Alejandro Mesa" wrote:
>> >
>> > > Diego,
>> > >
>> > > Lee sobre la funcion RIGHT en los libros en linea.Tambien lee
>> > > sobre
>> > > el
>> > > operador LIKE.
>> > >
>> > >
>> > > WHERE [PMM_EQUI].[DDSTTXT] like '%' + [PMV_STAT].[CDTXT04]
>> > > go
>> > >
>> > >
>> > > WHERE right([PMM_EQUI].[DDSTTXT], 4) = [PMV_STAT].[CDTXT04]
>> > > go
>> > >
>> > > Cualquiera de las dos opciones hara que SQL Server no utilize el
>> > > histograma
>> > > que almacena estadisticas de distribucion de los valores de las
>> > > columnas que
>> > > conforman la llave, en caso de existir algun indice por las
>> > > columnas
>> > > que
>> > > participan en la expresion. Esto se debe a que estamos manipulando
>> > > las
>> > > columnas en la expresion que aparece en la clausula "where".
>> > >
>> > > AMB
>> > >
>> > >
>> > > "Diego" wrote in message
>> > > news:
>> > > > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> > > > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> > > > Descripción
>> > > > FROM [PMM_EQUI], [PMV_STAT]
>> > > > WHERE [PMM_EQUI].[DDSTTXT]=[PMV_STAT].[CDTXT04]
>> > > >
>> > > > Quiero que en esta consulta solo me compare con los ultimo 4
>> > > > caracteres
>> > > > de
>> > > > este campo [PMM_EQUI].[DDSTTXT]
>> > > >
>> > > > Espero su ayuda
>> > >
>> > >
>> > >



Respuesta Responder a este mensaje
#9 Diego
05/04/2007 - 01:40 | Informe spam
Muchas Gracias alejandro tu solución me funciono a la perfección, pero ahora
me surge otra necesidad nose si me podrias dar una mano otra vez
Que pasa si yo ahora quiero hacer una introcción Like de las descrip´ciones
de esos status

POr ejemplo:

En la primera tabla

Equipo Status
1 MONT NOAC PTBO

Y en la segunda tabla

Cod Status Descripción
1 MONT Montado
2 NOAC No activo
3 PTBO Petición de borrado

Si el escribiera la palabra "Petición" mi intención es hacer un like que me
traiga todos los equipos que tienen el status PTBO : El resultado deberia ser
asi

Equipo Status
1 Petición de borrado


Como le daría resultado?????


Muchas Gracias de antemano

SAludos Diego...
"Alejandro Mesa" wrote:

Diego,

Me temia que estarias usando CHAR. Cuando se usa una columna de tipo CHAR,
SQL Server rellena con espacios a la derecha para completar la longitud
especificada. Si vemos el ejemplo que posteastes:

"MONT NOAC PTBO "

por lo que RIGHT([DDSTTXT], 4) seria " ", osea una cadena de cuatro
espacios.

has lo sgte:

right(rtrim(cast([PMM_EQUI].[DDSTTXT] as varchar(40))), 4) =
[PMV_STAT].[CDTXT04]


AMB


"Diego" wrote in message
news:
>
> El primero es [PMM_EQUI].[DDSTTXT] char(40), y el segundo es
> [PMV_STAT].[CDTXT04] un char(4) estan declarados asi por que el
> primer campo permite una cadena de mas de un status, sin embargo en la
> segunda tabla solo estan los codigos que puede tomar por ejemplo
>
> En la primera tabla
>
> Equipo Status
> 1 MONT NOAC PTBO
>
> Y en la segunda tabla
>
> Cod Status Descripción
> 1 MONT Montado
> 2 NOAC No activo
> 3 PTBO Petición de borrado
>
> El resultado deberia ser asi
>
> Equipo Status
> 1 Petición de borrado
>
>
> Osea que solo compare con los ultimos 4 cararacteres
>
> Muchas Gracias espero haber sido explicito
>
> Saludos
>
> Diego
>
>
> "Alejandro Mesa" wrote:
>
>> Diego,
>>
>> Que cual es la estructura de las tablas involucradas, tipo de data de
>> cada
>> columna, etc.
>>
>>
>> AMB
>>
>> "Diego" wrote in message
>> news:
>> > No entendi tu pregunta, sera que me la volves a hacer por favor
>> >
>> >
>> >
>> >
>> > "Alejandro Mesa" wrote:
>> >
>> >> Diego,
>> >>
>> >> Crees que puedas postear la estructura de las tablas, data de ejemplo
>> >> y
>> >> resultados esperados?. De esa forma podemos recrear el problema.
>> >>
>> >> AMB
>> >>
>> >>
>> >> "Diego" wrote:
>> >>
>> >> > Disculpa una vez mas , la estoy ejecutando de la siguiente forma
>> >> > pero
>> >> > no me
>> >> > esta trayendo ningún registro???
>> >> > Por que )?????
>> >> > que estoy haciendo mal.
>> >> >
>> >> > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> >> > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> >> > Descripción
>> >> > FROM [PMM_EQUI], [PMV_STAT]
>> >> > WHERE right([PMM_EQUI].[DDSTTXT], 4)=[PMV_STAT].[CDTXT04]
>> >> > go
>> >> >
>> >> >
>> >> > Espero tu respuesta
>> >> >
>> >> > Diego Román
>> >> >
>> >> > "Alejandro Mesa" wrote:
>> >> >
>> >> > > Diego,
>> >> > >
>> >> > > Lee sobre la funcion RIGHT en los libros en linea.Tambien lee
>> >> > > sobre
>> >> > > el
>> >> > > operador LIKE.
>> >> > >
>> >> > >
>> >> > > WHERE [PMM_EQUI].[DDSTTXT] like '%' + [PMV_STAT].[CDTXT04]
>> >> > > go
>> >> > >
>> >> > >
>> >> > > WHERE right([PMM_EQUI].[DDSTTXT], 4) = [PMV_STAT].[CDTXT04]
>> >> > > go
>> >> > >
>> >> > > Cualquiera de las dos opciones hara que SQL Server no utilize el
>> >> > > histograma
>> >> > > que almacena estadisticas de distribucion de los valores de las
>> >> > > columnas que
>> >> > > conforman la llave, en caso de existir algun indice por las
>> >> > > columnas
>> >> > > que
>> >> > > participan en la expresion. Esto se debe a que estamos manipulando
>> >> > > las
>> >> > > columnas en la expresion que aparece en la clausula "where".
>> >> > >
>> >> > > AMB
>> >> > >
>> >> > >
>> >> > > "Diego" wrote in message
>> >> > > news:
>> >> > > > SELECT [PMM_EQUI].[CDEQUNR] AS Equipo, [PMM_EQUI].[DSSERGE] AS
>> >> > > > Nro_serie,[PMV_STAT].[DSTXT30] as Status,[PMM_EQUI].[DSSHTXT] as
>> >> > > > Descripción
>> >> > > > FROM [PMM_EQUI], [PMV_STAT]
>> >> > > > WHERE [PMM_EQUI].[DDSTTXT]=[PMV_STAT].[CDTXT04]
>> >> > > >
>> >> > > > Quiero que en esta consulta solo me compare con los ultimo 4
>> >> > > > caracteres
>> >> > > > de
>> >> > > > este campo [PMM_EQUI].[DDSTTXT]
>> >> > > >
>> >> > > > Espero su ayuda
>> >> > >
>> >> > >
>> >> > >
>>
>>
>>



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