sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo dividir la cadena de nombre en mysql?

He separado esta respuesta en dos (2) métodos. El primer método separará su campo de nombre completo en nombre, segundo nombre y apellido. El segundo nombre se mostrará como NULL si no hay un segundo nombre.

SELECT
   SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name,
   If(  length(fullname) - length(replace(fullname, ' ', ''))>1,  
       SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2), ' ', -1) ,NULL) 
           as middle_name,
   SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 3), ' ', -1) AS last_name
FROM registeredusers

Este segundo método considera el segundo nombre como parte del apellido. Solo seleccionaremos una columna de nombre y apellido de su campo de nombre completo.

SELECT
   SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name,
    TRIM( SUBSTR(fullname, LOCATE(' ', fullname)) ) AS last_name
FROM registeredusers

Hay un montón de cosas interesantes que puede hacer con substr, localizar, substring_index, etc. Consulte el manual para ver si hay alguna confusión real. http://dev.mysql.com/doc/refman /5.0/es/funciones-de-cadenas.html