Concatenazione di stringhe in MySQL


149

Sto usando MySQL e MySQL Workbench 5.2 CE. Quando provo a concatenare 2 colonne last_namee first_namenon funziona:

select first_name + last_name as "Name" from test.student

21
Questa domanda non mostra assolutamente alcuno sforzo di ricerca. La prossima volta, Google le tue domande prima di porle qui.
Mathias Lykkegaard Lorenzen l'

5
Non mi interessa nessuno sforzo di ricerca, lol. StackOverflow diventa il mio massimo successo su Google per questo tipo di domanda, e questo è il posto per le risposte in crowdsourcing :)
hamish

Risposte:


271

MySQL è diverso dall'uso della maggior parte dei DBMS +o ||per la concatenazione. Utilizza la CONCATfunzione:

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

Come sottolineato da @eggyal nei commenti, è possibile abilitare la concatenazione di stringhe con l' ||operatore in MySQL impostando la PIPES_AS_CONCATmodalità SQL.


7
Risposta migliore, spiega che MySQL non utilizza operatori di concatenazione.
DonBecker,

28
Attenzione questo non è del tutto vero: MySQL fa il supporto ||per la concatenazione di stringhe, quando la PIPES_AS_CONCATmodalità di SQL è abilitata.
Eggyal

1
Per quelli che usano Doctrine, ho dovuto usare virgolette singole per lo spazio CONCATe doppie virgolette attorno all'intera query.
Cranato il

3
Per impostare PIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. Per disinserire: SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');. Altri esempi su mariadb.com/kb/en/library/sql-mode/#examples
mivk

27

Provare:

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

o meglio:

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

8

Utilizzare la funzione concat () anziché in +questo modo:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.