Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

tratamiento de strings

Estas en el tema de tratamiento de strings en el foro de Oracle en Foros del Web. Hola a todos, Estoy haciendo una función en PL/SQL que al utilizarla me da problemas :( el campo de la tabla que quiero tratar termina ...
  #1 (permalink)  
Antiguo 15/03/2007, 10:20
Avatar de MACGREGOR  
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta tratamiento de strings

Hola a todos,
Estoy haciendo una función en PL/SQL que al utilizarla me da problemas :(
el campo de la tabla que quiero tratar termina en un código númerico de 1 o 2 dígitos y un "_"
(ej: pedro_1, andrés_24, ...)

Perno no me funciona en los casos en los que el campo tiene 2 "_" (ej: juan_antonio_36)

Dentro de un bucle tengo el siguiente código...

nom_decod := SUBSTR(E.Name,
1,
INSTR(E.Name, '_') - 1);

Pero INSTR me devuelve la posición de E.Name del primer "_" por eso me falla cuando hay 2

Le he dado mil vueltas pero no se me ocurre como puedo hacerlo para conseguir que del string original me recorte desde el último "_" hasta el final

Si podeis hecharme una mano os estaré muy agradecido.
  #2 (permalink)  
Antiguo 15/03/2007, 17:04
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 22 años, 11 meses
Puntos: 1
Re: tratamiento de strings

Usa un loop.
Guardes la posición donde encuentras "_".
Recorta el String a partir de esa posición en adelante y entra en el loop buscando a ver si hay más "_". En caso de devolverte -1 puedes salir del loop y recuperar el valor anterior, de no ser así simplemente quédate en el loop hasta que te devuelva -1 y vas actualizando la variable de posición y recortando cada vez el String.

Espero haberme explicado.

Un saludo.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #3 (permalink)  
Antiguo 15/03/2007, 21:16
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
Re: tratamiento de strings

no seria algo como

nom_decod := SUBSTR(E.Name, 1, length(e.name) - instr(e.name, '_') );
__________________
Blogzote.com :-) Mi blog
  #4 (permalink)  
Antiguo 16/03/2007, 03:28
Avatar de Zoe79  
Fecha de Ingreso: diciembre-2001
Mensajes: 187
Antigüedad: 22 años, 11 meses
Puntos: 1
Re: tratamiento de strings

Cita:
Iniciado por kikolice Ver Mensaje
no seria algo como

nom_decod := SUBSTR(E.Name, 1, length(e.name) - instr(e.name, '_') );
Eso en el caso de que sólamente tengas un "_". Pero como ya ha dicho su problema viene cuando tiene un nombre compuesto y tiene varios "_" en un mismo String, y por eso he recomendado hacer un loop para ir recorriendo todo el String hasta parsear todas las "_" en el String.
__________________
Diseño integral / Desarrollo
Grupo Ikon
Imagen - Fotografía
Borja Lázaro Herrero
  #5 (permalink)  
Antiguo 17/03/2007, 17:01
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
Re: tratamiento de strings

haaa ya entendi, no cheque bien la pregunta, solo te hace falta algo como:

substr(e.name, 1, instr(e.name, '_', -1)-1)

instr con el tercer parametro "-1" te devuelve el primer "_" pero de derecha a izquiera del string, no de izquiera a derecha como esta por default, solo le restas 1 para que no te devuelva el "_" como tal
__________________
Blogzote.com :-) Mi blog
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:52.