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

Siguenos en facebook

6 Comentarios

  • 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…

  • Muy bien, buena aportacion.. Gracias

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

  • 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%';

  • interesante ..

Deja un comentario