Concatenar dos campos en MySQL

Hoy, estaba hablando con un compañero mío sobre una consulta que estaba intentando hacer y no conseguía de ninguna de las maneras.

Lo que quería hacer era juntar dos columnas o campos de una tabla de mysql para poder buscar una cadena en dichos campos. Por ejemplo: Pongámonos en el caso de que tenemos una tabla de personas y dos campos: uno para el nombre y otro para los apellidos y queremos buscar sobre esas personas sobre esos dos campos pero unificados y mostrarselos como un único campo, como lo haríamos?

Pues utilizando la función concat_ws de mysql. Está función permite concatenar dos o más campos para mostrarse como un único campo.

Veámos un ejemplo:

SELECT concat_ws(' ', nombre, apellidos) as persona FROM personas;

Esta consulta nos devolvería un único campo en el que se han juntado el nombre y los apellidos y utilizando el espacio como caracter de separación, en vez del espacio podemos utilizar cualquier carácter, por ejemplo:

SELECT concat_ws(' ,', nombre, apellidos) as persona FROM personas;

El resultado sería:

Esteban, García García

Si también queremos utilizar este campo concatenado dentro de WHERE tendremos que utilizar el concat_ws porqué WHERE no sabe que existe un campo concatenado, por lo que quedaría así:

SELECT concat_ws(' ', nombre, apellidos) as persona FROM personas WHERE concat_ws(' ', nombre, apellidos) LIKE '%cadena%';

Con el ejemplo anterior buscaría todas las personas que tuvieran la palabra <cadena> y mostraría el nombre completo de la persona.

Podéis encontrar más información en el siguiente enlace:

Concatenar campos en mysql

10 Respuestas

  1. ray

    GRACIAS MEN

  2. Cristobal

    Gracias muy buena ayuda

  3. gonzalo

    disculpa pero no se puede quedar la concatenacion en una sola columna en mi base de datos

  4. Victor Santillan

    Esta consulta está genial !!! Me ayudo mucho y evito una quebrada de cabeza.

  5. renato

    amigo y como seria tengo los campos nombre y apellido ambos con valores…. quisiera concatenar tanto el nombre y el apellido sobre otra columna de la misma tabla nombre_completo la cual esta vacia…

    • alberto

      select nombre, apellido, concat_ws(‘ , ‘, nombre, apellidos) as nombre_completo FROM personas into table persona2

  6. Raul

    Muy bien, buena aportacion.. Gracias

  7. rodrigo

    me salvaste la vida je!.. muy bueno, me salio de 10…gracias

  8. andrea

    excelente no sabes lo que tarde en buscar, era justo lo que necesitaba tengo dos campos los cuales son los apellidos y queria realizar una busqueda por ambos apellidos, quedo asi select nombres,apaterno,amaterno from tabla where concat(apaterno,’ ‘,amaterno) like ‘%GUTIERREZ AGUIRRE%’;

  9. kathy

    interesante ..

Agregar comentario