Concaténation de chaînes dans MySQL

149

J'utilise MySQL et MySQL Workbench 5.2 CE. Quand j'essaye de concaténer 2 colonnes, last_nameet first_nameça ne fonctionne pas:

select first_name + last_name as "Name" from test.student
Roshan
la source
21
Cette question ne montre absolument aucun effort de recherche. La prochaine fois, recherchez vos questions sur Google avant de les poser ici.
Mathias Lykkegaard Lorenzen
5
Je me fiche des efforts de recherche, lol. stackoverflow devient mon meilleur hit sur google pour ce type de question, et c'est l'endroit idéal pour les réponses crowdsourcées :)
hamish

Réponses:

271

MySQL est différent de la plupart des SGBD utilisant +ou ||pour la concaténation. Il utilise la CONCATfonction:

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

Comme @eggyal l'a souligné dans les commentaires, vous pouvez activer la concaténation de chaînes avec l' ||opérateur dans MySQL en définissant le PIPES_AS_CONCATmode SQL.

Eugène Yarmash
la source
7
Meilleure réponse, explique que MySQL n'utilise pas d'opérateurs de concaténation.
DonBecker
28
Attention, ce n'est pas tout à fait vrai: MySQL prend en charge ||la concaténation de chaînes, lorsque le PIPES_AS_CONCATmode SQL est activé.
eggyal
1
Pour ceux qui utilisent Doctrine, j'ai dû utiliser des guillemets simples pour l'espace entre CONCATet des guillemets doubles autour de toute la requête.
craned
3
Pour définir PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Pour désinitialiser: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Plus d'exemples sur mariadb.com/kb/en/library/sql-mode/#examples
mivk
27

Essayer:

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

ou mieux:

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

Utilisez la fonction concat () au lieu de +comme ceci:

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