String-Verkettung in MySQL

148

Ich verwende MySQL und MySQL Workbench 5.2 CE. Wenn ich versuche , 2 Spalten zu verketten, last_nameund first_namees funktioniert nicht:

select first_name + last_name as "Name" from test.student
Roshan
quelle
21
Diese Frage zeigt absolut keinen Forschungsaufwand. Google das nächste Mal Ihre Fragen, bevor Sie sie hier stellen.
Mathias Lykkegaard Lorenzen
4
Ich kümmere mich nicht um keine Forschungsanstrengungen, lol. Stackoverflow wird mein Top-Hit in Google für diese Art von Frage, und dies ist der Ort für Crowdsourcing-Antworten :)
Hamish

Antworten:

270

MySQL unterscheidet sich von den meisten DBMS, die +oder ||für die Verkettung verwenden. Es verwendet die CONCATFunktion:

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

Wie @eggyal in den Kommentaren hervorhob, können Sie die Verkettung von Zeichenfolgen mit dem ||Operator in MySQL aktivieren, indem Sie den PIPES_AS_CONCATSQL-Modus festlegen .

Eugene Yarmash
quelle
7
Bessere Antwort, erklärt, dass MySQL keine Verkettungsoperatoren verwendet.
DonBecker
28
Passen Sie dies nicht ist völlig wahr: MySQL hat Unterstützung ||für String - Verkettung, wenn der PIPES_AS_CONCATSQL - Modus aktiviert ist.
Eggyal
1
Für diejenigen Doctrine, die verwenden , musste ich einfache Anführungszeichen für den Platz in CONCATund doppelte Anführungszeichen für die gesamte Abfrage verwenden.
Craned
3
Einstellen PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Zum Deaktivieren : SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Weitere Beispiele unter mariadb.com/kb/en/library/sql-mode/#examples
mivk
27

Versuchen:

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

oder besser:

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

Verwenden Sie stattdessen die Funktion concat ()+ wie folgt :

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