El comando MySQL CONCAT te permite combinar dos o más strings (cadenas) de ca­ra­c­te­res en uno solo. Mientras que MySQL CONCAT no permite ningún de­li­mi­ta­dor, puedes combinar y mostrar la in­fo­r­ma­ción de forma aún más ordenada con MySQL CONCAT_WS.

¿Qué es MySQL CONCAT?

El sistema gestor de bases de datos re­la­cio­nal MySQL funciona con tablas. Los datos se almacenan de forma ordenada en columnas y filas y pueden co­n­su­l­tar­se y en­ca­de­nar­se cuando sea necesario. Esto es im­po­r­ta­n­te cuando se necesita in­fo­r­ma­ció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 co­n­ca­te­nar dos o más ex­pre­sio­nes, 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 “co­n­ca­te­na­te” (“co­n­ca­te­nar”).

Dado que MySQL almacena los datos en di­fe­re­n­tes tablas y en di­fe­re­n­tes columnas y filas, ini­cia­l­me­n­te se mantienen separados entre sí. Sin embargo, puede ser necesario emitir esta in­fo­r­ma­ción de forma conjunta para ciertas consultas o tareas. A co­n­ti­nua­ción, te mostramos ejemplos de ello. Una co­m­bi­na­ción de nombre, apellido y dirección será un buen ejemplo. Estos datos se en­cue­n­tran ini­cia­l­me­n­te en columnas in­de­pe­n­die­n­tes y, por lo tanto, también pueden buscarse o emitirse de forma in­di­vi­dual. Sin embargo, si necesitas la co­m­bi­na­ció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 ex­pre­sio­nes que se quieran fusionar. Estas se separan por comas. He aquí un ejemplo:

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

Es im­po­r­ta­n­te saber que MySQL CONCAT convierte las ex­pre­sio­nes 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 al­te­r­na­ti­va al comando MySQL CONCAT habitual, también existe la función MySQL CONCAT_WS. Esta al­te­r­na­ti­va funciona con un de­li­mi­ta­dor entre los strings in­di­vi­dua­les, mientras que MySQL CONCAT no permite el uso de de­li­mi­ta­do­res en su es­tru­c­tu­ra. La sintaxis básica de MySQL CONCAT_WS es la siguiente:

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

MySQL CONCAT_WS retorna el valor 0 solamente si el valor del de­li­mi­ta­dor 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, si­m­ple­me­n­te unimos dos strings. Aquí un ejemplo:

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

En este caso, ob­se­r­va­rás que la salida es si­m­ple­me­n­te “My­S­Q­L­CO­N­CAT”. Si ahora in­se­r­ta­ras un valor nulo (“Null”), el comando tendría el siguiente aspecto:

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

El resultado del cual sería: NULL

Aunque este ejemplo no tiene ningún uso práctico y solo pretende ilustrar el fu­n­cio­na­mie­n­to 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 in­de­pe­n­die­n­te. 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;
bash

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 in­fo­r­ma­ción. Aquí puedes ver el ejemplo:

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

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

Este comando es ideal para obtener una salida que muestre la in­fo­r­ma­ción cla­ra­me­n­te. 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 co­rre­s­po­n­die­n­te:

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
bash

El resultado co­rre­s­po­n­die­n­te 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
bash
Ir al menú principal