Oracle - Eliminar caracteres a la derecha

 
Vista:

Eliminar caracteres a la derecha

Publicado por Alberto (1 intervención) el 19/10/2010 12:16:53
Hola,

Pretendo hacer esto:

SELECT replace('meneame ',' ','') FROM dual
o con TRIM, pero con un campo de mi base de datos.

Estos dos ejemplos anteriores me funcionan perfectamente, pero con mi campo no. Entiendo que los caracteres a la derecha del valor de mi campo no son nulos o espacios. Debe ser otro tipo de caracter y por eso no los elimina!!!

Espero vuestra ayuda.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 6
Ha aumentado su posición en 7 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

RE:Eliminar caracteres a la derecha

Publicado por Leonardo Josué (46 intervenciones) el 19/10/2010 18:34:55
Buenos días Alberto,

Tal como lo comentas seguramente los caracteres que se encuentran al final no corresponden a espacios en blancos y por eso no se eliminan, sin embargo tú puedes especificarle a la función trim qué caracter es el que tienen que eliminar, por defecto es el espacio en blanco, pero tu puedes poner algo como esto

select trim('1' from '123Ejemplo111') from dual

esto te regresaría 23Ejemplo, es decir elimina las apariciones del '1' al inicio y fin de la cadena. El chiste sería identificar que caracter es el que está al final de la cadena.

Para esto puedes hacer algo como esto:

select ascii(substr('Ejemplo%', length('Ejemplo%'), 1)) from dual

Para este ejemplo la consulta te regresaría un 37 que es el código ASCII del símbolo '%' de tal manera que al final podrías poner algo como esto:

select trim(chr(37) from '%Ejemplo%%%') from dual

El resultado sería la palabra 'Ejemplo'

Saludos y espero que te sea de ayuda.
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar caracteres a la derecha

Publicado por luisma (14 intervenciones) el 20/10/2010 18:18:27
Leo

me ha parecido curioso tu respuesta. Pensaba que el TRIM era solo para espacios y si tenía que hacer
select trim('1' from '123Ejemplo111') from dual

lo hacia con un replace:
select replace('123Ejemplo111','1','') from dual

Siempre se aprende algo !!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 7 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

RE:Eliminar caracteres a la derecha

Publicado por Leonardo Josué (46 intervenciones) el 20/10/2010 20:39:16
Hola Luisma:

Con respecto a lo que comentas sólo hay que tener una consideración y es que el trim afecta a los caracteres al inicio y fin de la cadena, es decir si tienes esto

select trim('1' from '123111Ejemplo111') from dual

el resultado es que te elimina el 1 que aparece al inicio y los 3 1's que aparecen al final pero no afecta a los 1's que están antes de la palabra Ejemplo, de tal manera que la cadena resultado sería '23111Ejemplo'

ahora bien, la función REPLACE sustituye todas las apariciones del caracter de búsqueda por el caracter de reemplazo, sin importar la posición en la que se encuentran, de tal manera si se utiliza el replace tal y como lo propones:

select replace('123111Ejemplo111','1','') from dual

la cadena resultante sería 23Ejemplo, es decir te elimina todos los 1's incluyendo los que se encuentran en medio de la cadena.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar caracteres a la derecha

Publicado por luisma (14 intervenciones) el 27/10/2010 17:05:39
Leo, tienes toda la razon. Con el REPLACE elimino todos los 1 esten donde esten. Nada, para proximas veces el TRIM !!!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar