Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/10/2009, 10:16
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
Puntos: 2658
Respuesta: Metido en un gran problema

Estás metido en un brete bastante complicado, pero si dices que todos los nombres están con dos apelidos primero y los nombres después, la solución podría ser usar SUBSTRING_INDEX():

Código sql:
Ver original
  1. SELECT
  2.   SUBSTRING_INDEX('CAMPOS LOPEZ LUIS MARIA',' ',2),
  3.   SUBSTRING_INDEX('CAMPOS LOPEZ LUIS MARIA',' ',-2);
Esto daría por resultado:
Cita:
Apellido, Nombre
'CAMPOS LOPEZ', 'LUIS MARIA'
La función es SUBSTRING_INDEX(str, delim, count) , donde str es la cadena o campo a procesar, delim es el caracter que se busca como divisor (en este caso un espacio), y count representa la posición de repetición que se busca, cuando hay más de una (en este caso es la segunda aparición). Cuando el valor de count es positivo se devuelve todo lo que hay a la izquierda del delim, cuando es negativo, lo que está a la derecha.

Nota: SI aparecen apellidos compuestos (como De la Huerta, Del Solar, Torres y De la Puerta, por citar algunos que recuerdo), estos se deberán procesar aparte, porque no cumplen las generales.
Por eso digo que el brete es complicado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)