MySQL combina dos columnas en una columna


106

Estoy tratando de encontrar una manera de combinar dos columnas en una, pero sigo obteniendo el valor '0' en la columna en lugar de la combinación de las palabras.

Estos son los que he probado al igual que otros:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

SELECT column1 + ' ' + column2 AS column3
FROM table;

¿Podría alguien decirme qué estoy haciendo mal?


1
¿Qué base de datos estás utilizando? ¿Cuáles son los tipos de las dos columnas?
Gordon Linoff



Use la solución de respuesta superior pero agregue una tubería. seleccione concat (columna1, '|', columna2). Ayuda a sobresalir más tarde
Cosmic Hawk

Respuestas:


168

Supongo que está utilizando MySQL donde el +operador hace sumas, junto con la conversión silenciosa de los valores a números. Si un valor no comienza con un dígito, entonces el valor convertido es 0.

Así que prueba esto:

select concat(column1, column2)

Dos formas de agregar un espacio:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)

Estoy usando sql server 2005y me está dando un error comoIncorrect syntax near ')'.
hud

5
@coder. . . Esta pregunta está etiquetada como "mysql". Si tiene una pregunta sobre SQL Server, hágala como una pregunta, no en un comentario.
Gordon Linoff

Funciona también para T-SQL, una solución excelente y sencilla. Reduce dos columnas en una.
Ryan Battistone

23

Prueba esto, me funciona

select (column1 || ' '|| column2) from table;

1
Esto se parece a Oracle.
coburne

Esto también funcionó para combinar varias columnas (más de 2). Thx
Kayathiri

El estándar SQL proporciona la función CONCAT () para concatenar dos cadenas en una sola cadena. Sin embargo, SQLite no admite la función CONCAT (). En su lugar, utiliza el operador de concatenar (||) para unir dos cadenas en una.
PaulH


5

Esta es la única solución que funcionaría para mí, cuando necesitaba un espacio entre las columnas que se fusionan.

select concat(concat(column1,' '), column2)

3

Para los fanáticos de MySQL, me gusta la IFNULL()función. Otras respuestas aquí sugieren una funcionalidad similar con la ISNULL()función en algunas implementaciones. En mi situación, tengo una columna de descripciones que es NOT NULL, y una columna de números de serie que pueden ser NULLAsí es como los combiné en una columna:

SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;

Mis resultados sugieren que los resultados de concatenar una cadena con NULLresultados en a NULL. He obtenido el valor alternativo en esos casos.


3

Si está trabajando, Oracleentonces:

SELECT column1 || column2 AS column3
FROM table;

O

Si está trabajando en MySql, entonces:

SELECT Concat(column1 ,column2) AS column3
FROM table;

1

Lo he usado de esta manera y es lo mejor para siempre. En este código también se maneja null

SELECT Title,
FirstName,
lastName, 
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
FROM Customer

Prueba esto...



0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              

Manera simple de combinar
Ravin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.