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?

aab
fuente
1
¿Qué base de datos estás utilizando? ¿Cuáles son los tipos de las dos columnas?
Gordon Linoff
Mira esto: stackoverflow.com/questions/6427764/…
Choudhury Saadmaan Mahmid
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)
Gordon Linoff
fuente
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;
Oreniwa Babatunde
fuente
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
14

Es trabajo para mi

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
sk juli kaka
fuente
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)
Mattk
fuente
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.

2NinerRomeo
fuente
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;
Balaji Dongare
fuente
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...

Sunil Acharya
fuente
0
convert(varchar, column_name1) + (varchar, column_name)
Ritesh Yadav
fuente
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              
Presa
fuente
Manera simple de combinar
Ravin