none
Separar un campo en varias columnas RRS feed

  • Pregunta

  • Hola a todos , necesito una orientación  tengo un campo en donde guardo nombres y necesito separarlo por columnas  ejm:

    nombre                                      nombre 1      nombre2      apellido1         apellido 2 

    Julio cesar gomez gomez  julio          cesar          gomez             gomez 

    Ana torres sanchez                         Ana                               Torres             Sanchez 

    Agradezco la colaboración ya que nunca lo he realizado y he buscado pero no he encontrado una respuesta  clara al tema.

    Gracias 

    martes, 24 de septiembre de 2013 19:48

Respuestas

  • Si no tienes un patrón para identificar cuales son nombres y cuales apellidos no existe un modo que realmente puedas hacer esto.

    En el mismo ejemplo que pusiste tienes un nombre con 4 palabras y otro con 3, no hay modo que sepas si el segundo es nombre o apellido.

    En algunos casos podria tener 3 nombres y 2 apellidos, o podrian estar compuestos como María de Jesús De Font Lara, en este caso tiene 2 nombres y 2 apellidos pero contiene 6 palabras, los espacios no te van a servir para identificar, sino se hubiera podido basas un script en ellos.

    La mejor opción que tienes es pasar por un proceso de calidad de información, en donde una persona humana tendrá que hacer dichas modificaciones manualmente.

    • Marcado como respuesta Anita1011 martes, 24 de septiembre de 2013 20:14
    martes, 24 de septiembre de 2013 20:07
  • Hola

    esta es una posible forma seguro debe haber mejores pero esta es mi sugerencia aunque tendrías que adaptarlo a lo que requieres

    SELECT PARSENAME(REPLACE(nombre,' ','.'),2) AS Uno,
    PARSENAME(REPLACE(nombre,' ','.'),1) AS Dos,
    PARSENAME(REPLACE(nombre,' ','.'),4) AS Tres,
    PARSENAME(REPLACE(nombre,' ','.'),3) AS Cuatro
    FROM MiTabla


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos


    • Editado José Barba martes, 24 de septiembre de 2013 20:08  
    • Marcado como respuesta Anita1011 martes, 24 de septiembre de 2013 21:53
    martes, 24 de septiembre de 2013 20:07

Todas las respuestas

  • Si no tienes un patrón para identificar cuales son nombres y cuales apellidos no existe un modo que realmente puedas hacer esto.

    En el mismo ejemplo que pusiste tienes un nombre con 4 palabras y otro con 3, no hay modo que sepas si el segundo es nombre o apellido.

    En algunos casos podria tener 3 nombres y 2 apellidos, o podrian estar compuestos como María de Jesús De Font Lara, en este caso tiene 2 nombres y 2 apellidos pero contiene 6 palabras, los espacios no te van a servir para identificar, sino se hubiera podido basas un script en ellos.

    La mejor opción que tienes es pasar por un proceso de calidad de información, en donde una persona humana tendrá que hacer dichas modificaciones manualmente.

    • Marcado como respuesta Anita1011 martes, 24 de septiembre de 2013 20:14
    martes, 24 de septiembre de 2013 20:07
  • Hola

    esta es una posible forma seguro debe haber mejores pero esta es mi sugerencia aunque tendrías que adaptarlo a lo que requieres

    SELECT PARSENAME(REPLACE(nombre,' ','.'),2) AS Uno,
    PARSENAME(REPLACE(nombre,' ','.'),1) AS Dos,
    PARSENAME(REPLACE(nombre,' ','.'),4) AS Tres,
    PARSENAME(REPLACE(nombre,' ','.'),3) AS Cuatro
    FROM MiTabla


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos


    • Editado José Barba martes, 24 de septiembre de 2013 20:08  
    • Marcado como respuesta Anita1011 martes, 24 de septiembre de 2013 21:53
    martes, 24 de septiembre de 2013 20:07
  • Oye muchas gracias si me sale pero cuando un nombre es muy largo todo el registro me sale null ejm  jose de la paz torres gomez  , pero  me queda una duda hay manera que en los campos que no hay dato en vez de que me salga null me queden vacios.

    Muchas gracias 


    • Editado Anita1011 martes, 24 de septiembre de 2013 20:33
    martes, 24 de septiembre de 2013 20:24
  • para reemplazar un NULL puedes usar 
    COALESCE(campo, 'valor nuevo')
    COALESCE(campo, ' ')

    martes, 24 de septiembre de 2013 20:33
  • muchas gracias y que pena contigo pero teniendo en cuenta el query que tu me enviaste inicialmente en donde debería colocar el COALESCE , lo que pasa es que estoy hasta ahora aprendiendo y me enredo mucho.

    Muchas gracias 

    martes, 24 de septiembre de 2013 20:45
  • gracias, justo lo que estaba buscando...

    excelente respuesta!

    viernes, 28 de julio de 2017 15:57