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

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.


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

8

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

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.