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 originalSELECT
SUBSTRING_INDEX('CAMPOS LOPEZ LUIS MARIA',' ',2),
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.