2012-01-10 15 views
6

In PHP, ho bisogno di cambiare questi datiQuale usare, concat, concat_ws? in mysql

FirstName | MiddleName | LastName 
--------------------------------- 
Robert | Thomas  | Smith 

nella stringa "Smith, Robert Thomas"

Non sono sicuro se ho bisogno di usare una join, concat o concat_ws.

so che se uso

concat_ws(', ',LastName,FirstName,MiddleName) 

Allora ottengo "Smith, Robert, Thomas" ma ho bisogno di "Smith, Robert Thomas".

Qualche consiglio?

risposta

7

poi basta usare

CONCAT(LastName, ', ', FirstnName, ' ', MiddleName) 

CONCAT_WS viene utilizzato per concatenare con un solo separatore mentre il CONCAT aggiunge stringhe insieme in qualsiasi modo si desidera.

+0

Grazie, tra lavoro e compiti a casa penso che il mio cervello ha lasciato per la giornata !! .. una risposta così semplice non so perché io non ci ho pensato. lol .. –

+3

@TommyCombs Ricorda di contrassegnare le risposte, sono la base su quale classifica funziona, le risposte che segnalano e contribuiscono dà punti e questo è ciò che motiva le persone a continuare a tornare a S-O –

13

mi rendo conto che questo è un necro, ma vale la pena notare quanto segue:

Sia CONCAT & CONCAT_WS sono in gran parte equivalenti.

Tuttavia, la differenza più degna di nota è che CONCAT potrebbe non restituire i risultati previsti per i casi in cui uno degli input è NULL. In questi casi CONCAT restituirà NULL che CONCAT_WS salterà valori nulli e ancora restituire una stringa del risultato ingressi rimanenti. Ciò significa che nella maggior parte dei casi probabilmente vorrai usare CONCAT_WS.

Di seguito sono equivalenti se uno o più ingressi sono NULL:

// Result: LastName, FirstName, MiddleName 
CONCAT(LastName, ', ', FirstName, ', ', MiddleName) 

// Result: LastName, FirstName, MiddleName 
CONCAT_WS(', ', LastName, FirstName, MiddleName) 

Nei casi in cui si desidera utilizzare CONCAT_WS con differenti 'separatori' sufficiente impostare il primo ingresso ad una stringa vuota:

// Result: LastName, FirstName (MiddleName) 
CONCAT_WS('', LastName, ', ', FirstName, ' (', MiddleName, ')')