MySQL combina duas colunas em uma coluna


106

Estou tentando encontrar uma maneira de combinar duas colunas em uma, mas continuo obtendo o valor '0' na coluna, em vez da combinação das palavras.

Estas são as que tentei tão bem quanto outras:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

Alguém poderia me dizer o que estou fazendo de errado?


1
Qual banco de dados você está usando? Quais são os tipos das duas colunas?
Gordon Linoff



Use a solução da resposta principal, mas adicione um cano. selecione concat (coluna1, '|', coluna2). Isso ajuda no excel depois
Cosmic Hawk

Respostas:


167

Meu palpite é que você está usando o MySQL, onde o +operador faz a adição, junto com a conversão silenciosa dos valores em números. Se um valor não começar com um dígito, o valor convertido será 0.

Então tente isso:

select concat(column1, column2)

Duas maneiras de adicionar um espaço:

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

estou usando sql server 2005e está apresentando um erro comoIncorrect syntax near ')'.
hud

5
@coder. . . Esta questão foi marcada como "mysql". Se você tiver uma pergunta sobre o SQL Server, faça-a como uma pergunta, não como um comentário.
Gordon Linoff

Funciona também para T-SQL, solução excelente e simples. Reduz duas colunas em uma.
Ryan Battistone

23

Tente isso, funciona para mim

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

1
Parece Oracle.
coburne

Isso funcionou para combinar várias (mais de 2) colunas também. Thx
Kayathiri 01 de

O padrão SQL fornece a função CONCAT () para concatenar duas strings em uma única string. SQLite, entretanto, não suporta a função CONCAT (). Em vez disso, ele usa o operador concatenar (||) para juntar duas strings em uma.
PaulH

14

É trabalho para mim

SELECT CONCAT(column1, ' ' ,column2) AS newColumn;

5

Esta é a única solução que funcionaria para mim, quando eu solicitei um espaço entre as colunas sendo mescladas.

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

3

Para os fãs do MySQL, gosto da IFNULL()função. Outras respostas aqui sugerem funcionalidade semelhante com a ISNULL()função em algumas implementações. Na minha situação, tenho uma coluna de descrições, que é NOT NULL, e uma coluna de números de série, que podem ser. NULLFoi assim que os combinei em uma coluna:

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

Meus resultados sugerem que os resultados da concatenação de uma string com NULLresultados em a NULL. Tenho obtido o valor alternativo nesses casos.


3

Se você estiver trabalhando em Oracle:

SELECT column1 || column2 AS column3
FROM table;

OU

Se você estiver trabalhando no MySql, faça o seguinte:

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

1

Eu usei esse caminho e é o melhor para sempre. Neste código, nulo também manipulado

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

Experimente isso ...



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

Maneira simples de combinar
Ravin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.