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

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.


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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.