Extraccion de Caracteres en una columna

suzuka88
31 de Julio del 2008
Buenas Noches:
Tengo una consulta que hacerles....tengo en mi tabla unos 20000 datos.......una de las columnas es el nombre completo de una persona por ejemplo el mio....Vargas Arredondo, Fernando Andres.........lo que quiero es separar los apellidos Paterno, en una columna el materno en otra, y el (los) nombres en otra......como hago??. me ayudaria el substr(...,...)???, como buscaria la ',' para saber q desde alli comienza el nombre de la persona...resolver esto seria lo primordial.luego haria algo parecido para separar los 2 apellidos pues esta separados por ' ' , ...solo me quedarian los apellidos compuestos , pero seria la gran minoria.....¿¿tendria acaso q crear mi propia funcion corriendo un cursor capturando el campo y haciendo update mientras recorro dicho cursor???.......ayudenme please.gracias por su tiempo....

CHEMIAN
31 de Julio del 2008
prueba con esto. ten en cuenta que g seria el nombre de tu columna, y he tomado como referencia tu ejemplo. si lo vas haciendo secuencial, te dara el nombre compuesto si lo es y depues los dos nombres separados o si no es compuesto el 2º te dara vacio.
Despues te dara los dos apellidos y en los siguiente el 1º apellido y despues el 2º apellido.


NOMBRE
select substr(g,1,instr(g,',',1,1)-1) from prueba

select substr( substr(g,1,instr(g,',',1,1)-1) ,1, instr(substr(g,1,instr(g,',',1,1)-1),' ',1,1)) from prueba

select trim(substr( substr(g,1,instr(g,',',1,1)-1) , length( substr( substr(g,1,instr(g,',',1,1)-1) ,1, instr(substr(g,1,instr(g,',',1,1)-1),' ',1,1)) ), length(substr(g,1,instr(g,',',1,1)-1)))) from prueba

APELLIDOS
select trim(substr(g,instr(g,',',1,1)+1,length(g))) from prueba

select substr( trim(substr(g,instr(g,',',1,1)+1,length(g))) , 1 , instr( trim(substr(g,instr(g,',',1,1)+1,length(g))) ,' ' , 1,1)) from prueba

select trim( substr( trim(substr(g,instr(g,',',1,1)+1,length(g))), length ( substr( trim(substr(g,instr(g,',',1,1)+1,length(g))) , 1 , instr( trim(substr(g,instr(g,',',1,1)+1,length(g))) ,' ' , 1,1)) ) , length ( trim(substr(g,instr(g,',',1,1)+1,length(g))) ))) from prueba


suzuka88
31 de Julio del 2008
Funciona en un 99%!!!!. Gracias!!!!,......los apellidos compuestos como "De la Cruz Montalvo", ya los manejo en forma manual. me parece que seria muy complejo condicionar para q busque si hay mas de un espacio en blanco en los apellidos.ya que puede haber uno por error de escritura y no poque el apellido es asi......pero parece que para ti no hay imposibles......jejejeje........Muchas Gracias amigo me sacaste de un problema....

Alexandra
31 de Julio del 2008
Hola,
Tu me puedes ayudar con el siguiente caso?
Tengo un campo en una tabla que es caracter, los datos son: xxx-xxxxxx un número de caracteres separado de otros mediante un guión, apliqué la función instr para encontrar la posición del caracter buscado pero el número que me retorna no tiene coherencia
Por ejemplo 000-00001 al aplicr instr(000-00001,'-',1,1) obtengo como resultado el valor 8. y yo esperaría 4 que es donde se encuentra el guión.

Estoy en un error? Me ayudas?

Muchas gracias.

badis
31 de Julio del 2008
prueba con instr('000-00001,'-')