MySQL CONCAT: cómo concatenar strings

El comando MySQL CONCAT te permite combinar dos o más strings (cadenas) de caracteres en uno solo. Mientras que MySQL CONCAT no permite ningún delimitador, puedes combinar y mostrar la información de forma aún más ordenada con MySQL CONCAT_WS.

¿Qué es MySQL CONCAT?

El sistema gestor de bases de datos relacional MySQL funciona con tablas. Los datos se almacenan de forma ordenada en columnas y filas y pueden consultarse y encadenarse cuando sea necesario. Esto es importante cuando se necesita información de dos o más tablas. El comando más práctico para fusionar varias columnas es MySQL CONCAT. Esta función de string se utiliza cuando se desea concatenar dos o más expresiones, que se combinan en un solo string antes de ser emitido. Hay varias maneras de utilizar MySQL CONCAT. El nombre de MySQL CONCAT proviene de la palabra inglesa “concatenate” (“concatenar”).

Dado que MySQL almacena los datos en diferentes tablas y en diferentes columnas y filas, inicialmente se mantienen separados entre sí. Sin embargo, puede ser necesario emitir esta información de forma conjunta para ciertas consultas o tareas. A continuación, te mostramos ejemplos de ello. Una combinación de nombre, apellido y dirección será un buen ejemplo. Estos datos se encuentran inicialmente en columnas independientes y, por lo tanto, también pueden buscarse o emitirse de forma individual. Sin embargo, si necesitas la combinación de los tres datos, MySQL CONCAT te puede ayudar.

Sintaxis de MySQL CONCAT

La sintaxis básica de MySQL CONCAT es muy sencilla, al igual que la de los comandos MySQL DELETE y MySQL REPLACE. Después del comando en sí, se enumeran todas las expresiones que se quieran fusionar. Estas se separan por comas. He aquí un ejemplo:

CONCAT (Expresión1, Expresión2, Expresión3, …)

Es importante saber que MySQL CONCAT convierte las expresiones con valor numérico en una cadena binaria. De este modo, las cadenas binarias siguen siendo cadenas binarias, las cadenas no binarias también siguen siendo no binarias. Una expresión con el valor 0 también conserva el valor 0.

Como alternativa al comando MySQL CONCAT habitual, también existe la función MySQL CONCAT_WS. Esta alternativa funciona con un delimitador entre los strings individuales, mientras que MySQL CONCAT no permite el uso de delimitadores en su estructura. La sintaxis básica de MySQL CONCAT_WS es la siguiente:

CONCAT_WS (Delimitador, Expresión1, Expresión2, Expresión3, …)

MySQL CONCAT_WS retorna el valor 0 solamente si el valor del delimitador es 0.

Ejemplos de MySQL CONCAT

Para entender cómo funciona MySQL CONCAT, merece la pena echar un vistazo a algunos ejemplos sencillos. Para empezar, simplemente unimos dos strings. Aquí un ejemplo:

SELECT CONCAT ('MySQL', 'CONCAT');

En este caso, observarás que la salida es simplemente “MySQLCONCAT”. Si ahora insertaras un valor nulo (“Null”), el comando tendría el siguiente aspecto:

SELECT CONCAT ('MySQL', NULL, 'CONCAT');

El resultado del cual sería: NULL

Aunque este ejemplo no tiene ningún uso práctico y solo pretende ilustrar el funcionamiento básico, el siguiente ejemplo ofrece un caso más práctico. Imagina una lista de clientes. Esta se divide en varias columnas, como el número de cliente, el nombre, los apellidos, la dirección e incluso el número de teléfono. Los datos se almacenan de forma independiente. Ahora bien, para crear una salida unida, MySQL CONCAT te va a servir de ayuda. Para obtener un listado de clientes con nombres completos, haz que MySQL concatene el nombre, un espacio y el apellido. Para ello, utiliza el siguiente comando:

SELECT CONCAT (Nombre, ' ', Apellidos) Nombre_del_cliente
FROM Lista_de_clientes;

El resultado del código anterior serán todos los clientes con su nombre y apellidos completos.

Ejemplos de MySQL CONCAT_WS

Para hacer una lista de los nombres en orden inverso y separar el apellido y el nombre por una coma, se necesita el comando MySQL CONCAT_WS. El proceso es similar, pero la coma precede al resto de la información. Aquí puedes ver el ejemplo:

SELECT CONCAT_WS (', ', 'González', 'Pedro');

Una vez ejecutado, la respuesta obtenida es “González, Pedro”.

Este comando es ideal para obtener una salida que muestre la información claramente. En el último ejemplo se puede ver cómo se obtiene una dirección completa con MySQL CONCAT_WS. Este es el aspecto del código correspondiente:

SELECT
CONCAT_WS (CHAR(13),
CONCAT_WS (' ', Nombre, Apellidos),
Dirección1,
Dirección2,
CONCAT_WS (' ', Código postal, Ciudad),
País,
CONCAT_WS (CHAR(13), ' ')) AS Dirección­_del_cliente
FROM Lista_de_clientes

El resultado correspondiente tiene el siguiente aspecto:

Dirección del cliente
Pedro Gonzalez
Calle de ejemplo 1
46005 Valencia
España
Daniel Lacalle
Calle de ejemplo 10
11520 Rota
España