Concatenación de cadenas en MySQL

149

Estoy usando MySQL y MySQL Workbench 5.2 CE. Cuando trato de concatenar 2 columnas last_namey first_nameno funciona:

select first_name + last_name as "Name" from test.student
Roshan
fuente
21
Esta pregunta no muestra absolutamente ningún esfuerzo de investigación. La próxima vez, busca tus preguntas en Google antes de hacerlas aquí.
Mathias Lykkegaard Lorenzen
55
No me importa ningún esfuerzo de investigación, jajaja. stackoverflow se convierte en mi principal éxito en google para este tipo de preguntas, y este es el lugar para respuestas de crowdsourced :)
hamish

Respuestas:

271

MySQL es diferente del uso de la mayoría de los DBMS +o ||para la concatenación. Utiliza la CONCATfunción:

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

Como @eggyal señaló en los comentarios, puede habilitar la concatenación de cadenas con el ||operador en MySQL configurando el PIPES_AS_CONCATmodo SQL.

Eugene Yarmash
fuente
77
Mejor respuesta, explica que MySQL no usa operadores de concatenación.
DonBecker
28
Cuidado con esto no es del todo cierto: MySQL hace de soporte ||para la concatenación de cadenas, cuando la PIPES_AS_CONCATestá habilitado el modo SQL.
eggyal
1
Para aquellos que usan Doctrine, tuve que usar comillas simples para el espacio CONCATy comillas dobles alrededor de toda la consulta.
Craned
3
Para establecer PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Para desarmar: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Más ejemplos en mariadb.com/kb/en/library/sql-mode/#examples
mivk
27

Tratar:

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

o mejor:

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

Use la función concat () en lugar de hacerlo +así:

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