Volver a la lista de artículos Artículos
Lectura de 8 minutos

Cómo Concatenar Dos Columnas en SQL - Una Guía Detallada

En SQL, la concatenación es la operación de unir cadenas, o piezas de información de texto. Aprende a concatenar dos columnas en SQL con esta guía detallada.

La concatenación SQL es el proceso de combinar dos o más cadenas de caracteres, columnas o expresiones en una sola cadena. Por ejemplo, la concatenación de 'Kate', ' ', y 'Smith' nos da 'Kate Smith'.

La concatenación SQL puede utilizarse en diversas situaciones en las que es necesario combinar varias cadenas en una sola. Algunos casos de uso común incluyen:

  • Crear nombres completos u otras cadenas compuestas a partir de varias columnas de una tabla; por ejemplo, concatenar el nombre y los apellidos de un usuario para crear un nombre completo.
  • Creación de etiquetas o títulos personalizados mediante la concatenación de varios valores de cadena.
  • Crear un identificador único concatenando varias columnas: por ejemplo, un ID de cliente y un número de pedido.
  • Crear direcciones de correo electrónico concatenando un nombre de usuario (katesmith) y un nombre de dominio (learnSQL.com).

Estos son sólo algunos ejemplos, pero la concatenación SQL puede utilizarse en muchas otras situaciones en las que es necesario combinar varias cadenas.

La mejor manera de practicar SQL, incluida la concatenación SQL, es nuestro programa interactivo Ejercicios prácticos de SQL. Contiene casi 90 ejercicios prácticos, divididos en cinco secciones temáticas. Realizar el curso es una excelente manera de refrescar sus conocimientos de SQL. Con cada ejercicio resuelto, aumentará la confianza en sus habilidades.

Cómo concatenar dos columnas en SQL

La sintaxis para la concatenación SQL puede variar dependiendo del dialecto SQL específico que se utilice. Aquí hay algunos ejemplos de las técnicas más conocidas para la concatenación SQL.

El Operador ||

SQL estándar utiliza el operador || (así como algunas otras opciones). La mayoría de las bases de datos SQL, con la notable excepción de SQL Server, admiten este operador. El operador || toma dos o más argumentos y devuelve una única cadena concatenada.

Utilización

Imaginemos el siguiente caso. Tenemos una tabla llamada usuarios que almacena información de usuarios:

id	first_name	middle_name	last_name	age	marital_status
--------------------------------------------------------------
1	Derek		Brent		Zoolander	35	S
2	Marty		George	McFly		20	S

Utilicemos el operador || para concatenar los nombres y apellidos de los usuarios y obtener un nombre completo:

SELECT first_name || ' ' || last_name AS full_name 
FROM users;

El resultado:

full_name
---------------
Derek Zoolander
Marty McFly

En este ejemplo, el operador || toma las columnas first_name y last_name de la tabla users y las concatena con un espacio entre ellas, obteniendo el nombre completo de cada usuario. El resultado se identifica como full_name y se devuelve en los resultados de la consulta.

Puede concatenar varias cadenas con el operador || proporcionando más de dos argumentos. Por ejemplo, la siguiente sentencia SQL concatena el nombre, el segundo nombre y los apellidos de los usuarios:

SELECT first_name || ' ' || middle_name || ' ' || last_name AS full_name 
FROM users;

El resultado:

full_name
---------------
Derek Brent Zoolander
Marty George McFly

El operador de concatenación || también funciona con columnas que no son de texto

Los dos ejemplos anteriores sólo contienen cadenas; ¿qué ocurre con los demás tipos de datos? Los argumentos del operador || pueden ser cadenas, columnas de texto, expresiones y otros tipos de datos como números o fechas. Se convertirán automáticamente en cadenas.

A continuación se muestra un ejemplo de cómo utilizar el operador || para concatenar el nombre, el apellido y la edad de un usuario para formar una nueva cadena:

SELECT 
  first_name || ' ' || last_name || ': ' || age || ' yo' AS user_details 
FROM users;

El resultado:

user_details
---------------
Derek Zoolander: 35 yo
Marty McFly: 20 yo

Tenga en cuenta que el primer argumento de la concatenación debe ser de tipo texto. Si no es así, debe convertirlo en un tipo de texto. A continuación se muestra un ejemplo de cómo utilizar el operador || para concatenar el ID y el nombre de un usuario para formar un identificador único:

SELECT 
  cast(id as VARCHAR) || '_' || first_name AS unique_id 
FROM users;

El resultado:

unique_id
---------------
1_Derek
2_Marty

¡Cuidado con los NULL!

El operador de concatenación | | devuelve NULL para cualquier argumento NULL.

Imagine que tiene algunos valores vacíos o NULL en su base de datos:

id	first_name	middle_name	last_name	age	marital_status
--------------------------------------------------------
3	Terminator			T-1000	1	S
4	Robocop					2	S

Si uno de los argumentos de la concatenación es NULL, la expresión completa devuelve NULL. En el siguiente ejemplo, probaremos una concatenación con un argumento NULL:

SELECT 
  first_name || ' ' || last_name AS full_name 
FROM users;

El resultado:

full_name
---------------
Terminator T-1000
NULL

El segundo resultado aquí es NULL: Robocop tiene nombre, pero su segundo nombre y sus apellidos son NULL. Si concatena 'Robocop' con NULL, obtendrá NULL.

Nota: En el caso de Oracle, una cadena NULL es una cadena vacía. La concatenación "ignora" la cadena NULL, y se devuelven los argumentos concatenados. Oracle devolverá lo siguiente:

full_name
---------------
Terminator T-1000
Robocop

Uso de la Función COALESCE() para Concatenar Valores NULL

Un consejo increíble para evitar los valores NULL es utilizar la función COALESCE(). La función COALESCE() en SQL es una función incorporada que devuelve el primer valor no NULL en una lista de expresiones. La función toma uno o más argumentos y devuelve el primer argumento que no sea NULL.

En el siguiente ejemplo, supongamos que el campo last_name podría ser NULL. Queremos evitar una concatenación errónea, así que utilizamos la función COALESCE():

SELECT 
  first_name || ' ' || COALESCE(last_name, '') AS full_name 
FROM users;

El resultado:

full_name
---------------
Terminator T-1000
Robocop

Arriba, COALESCE() devuelve el apellido si el apellido no es NULL. Si el apellido es NULL, devuelve la cadena vacía ‘’. Esto nos permite evitar concatenar el valor NULL del apellido de Robocop y obtener un resultado NULL.

El operador +

El operador + se utiliza para concatenar cadenas en MS SQL Server. Toma dos o más argumentos y devuelve una única cadena concatenada.

A continuación se muestra un ejemplo de uso del operador + para concatenar el nombre y los apellidos de un usuario:

SELECT 
  first_name + ' ' + last_name AS full_name 
FROM users;

El resultado:

full_name
---------------
Derek Zoolander
Marty McFly

Con el operador +, ninguno de los argumentos se convierte automáticamente. Cada argumento de la expresión debe ser del tipo VARCHAR para que la concatenación tenga éxito. Para concatenar valores de distintos tipos, se utiliza la función CAST():

SELECT 
  first_name + ' ' + last_name + ': ' + CAST(age AS VARCHAR) + ' yo' AS user_details 
FROM users;

El resultado:

user_details
---------------
Derek Zoolander: 35 yo
Marty McFly: 20 yo

Sin CAST(), SQL Server arrojará el siguiente error:

MS SQL
Token error: 'Error converting data type varchar to bigint.' 

La función CONCAT

CONCAT() es otra función estándar incorporada en SQL que concatena dos o más valores. Todos los sistemas de bases de datos populares, excepto SQLite, aceptan esta función; SQLite sólo acepta el operador ||.

Las principales diferencias entre los operadores || y + y la función CONCAT() son:

  • CONCAT() los argumentos se convierten automáticamente en cadenas, por lo que se pueden utilizar argumentos de distintos tipos de datos.
  • CONCAT() trata los valores NULL como cadenas vacías y los ignora. La excepción es MySQL (y, en menor medida, MariaDB). En MySQL, la función CONCAT() es equivalente al operador ||; los argumentos NULL dan como resultado NULL.

He aquí un ejemplo de utilización de CONCAT() para concatenar los nombres y apellidos de los usuarios:

SELECT 
  CONCAT(first_name, ' ', last_name) AS full_name 
FROM users;

El resultado:

full_name
---------------
Derek Zoolander
Marty McFly
Terminator T-1000
Robocop

En el siguiente ejemplo, utilizaremos CONCAT() para concatenar el ID y el nombre de los usuarios para formar un identificador único. Tenga en cuenta que la función CAST() no es necesaria:

SELECT 
  CONCAT(id, '_', first_name) AS unique_id 
FROM users;

El resultado:

unique_id
---------------
1_Derek
2_Marty
3_Terminator
4_Robocop

La función CONCAT_WS

La función CONCAT_WS en SQL es similar a la función CONCAT, pero se utiliza para concatenar dos o más cadenas con un separador. La función toma dos argumentos: el primer argumento es el separador, y el resto de argumentos son las cadenas que se quieren concatenar.

Todas las bases de datos populares, excepto Oracle y SQLite, aceptan la función CONCAT_WS. Esta función ignora NULLs en los argumentos (aparte del separador), incluso para MySQL.

Utilicemos la función CONCAT_WS para concatenar los valores first_name y last_name con un separador de espacios:

SELECT 
  CONCAT_WS(' ', first_name, last_name) AS full_name 
FROM users;

El resultado:

full_name
---------------
Derek Zoolander
Marty McFly
Terminator T-1000
Robocop

Por último, intentemos concatenar tres argumentos, separados por espacios:

SELECT 
  CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name 
FROM users;

El resultado:

full_name
---------------
Derek Brent Zoolander
Marty George McFly
Terminator T-1000
Robocop

Si quieres saber más sobre las funciones SQL, te recomiendo leer el artículo 5 SQL Functions for Manipulating Strings de Marek Pankowski.

¡Concatenar Dos Columnas En SQL Es Fácil!

Espero que hayas disfrutado leyendo este artículo tanto como yo escribiéndolo. Las diferencias entre los dialectos de SQL son sutiles, y siempre es emocionante saber más sobre ellas.

¿Te ha animado este artículo a aprender más sobre SQL? No lo dudes. Tu viaje por SQL ya ha empezado con buen pie, y LearnSQL.es tiene todos los recursos y la ayuda que necesitas para convertirte en un experto en SQL.

Dominar SQL es una experiencia práctica: aprender los conceptos es una cosa, pero escribir buenas consultas requiere práctica. Recomiendo sinceramente nuestro Ejercicios prácticos de SQL que pone a prueba tus conocimientos básicos de SQL y te muestra dónde tienes que mejorar.

¿A qué esperas? No te limites a concatenar columnas: ¡aprende más SQL hoy mismo!