Concatenação de strings no MySQL

149

Estou usando o MySQL e o MySQL Workbench 5.2 CE. Quando tento concatenar 2 colunas last_namee first_namenão funciona:

select first_name + last_name as "Name" from test.student
Roshan
fonte
21
Esta pergunta não mostra absolutamente nenhum esforço de pesquisa. Da próxima vez, pesquise no Google suas perguntas antes de fazer aqui.
Mathias Lykkegaard Lorenzen
5
Eu não me importo com nenhum esforço de pesquisa, lol. stackoverflow se torna meu top hit no google para este tipo de questão, e este é o lugar para respostas crowdsourced :)
Hamish

Respostas:

271

O MySQL é diferente da maioria dos DBMSs que usam +ou ||para concatenação. Ele usa a CONCATfunção:

SELECT CONCAT(first_name, " ", last_name) AS Name FROM test.student

Como @eggyal apontou nos comentários, você pode ativar a concatenação de strings com o ||operador no MySQL, configurando o PIPES_AS_CONCATmodo SQL.

Eugene Yarmash
fonte
7
Melhor resposta, explica que o MySQL não usa operadores de concatenação.
precisa saber é o seguinte
28
Cuidado com isso não é inteiramente verdade: MySQL faz suporte ||para concatenação, quando o PIPES_AS_CONCATmodo de SQL está habilitado.
eggyal
1
Para aqueles que usam Doctrine, eu tive que usar aspas simples para o espaço CONCATe aspas duplas em toda a consulta.
craned
3
Para definir PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Para retirar: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Mais exemplos em mariadb.com/kb/en/library/sql-mode/#examples
mivk
27

Experimentar:

select concat(first_name,last_name) as "Name" from test.student

ou melhor:

select concat(first_name," ",last_name) as "Name" from test.student
ADW
fonte
8

Use a função concat () em vez de +:

select concat(firstname, lastname) as "Name" from test.student
Harry Joy
fonte