2012-01-10 19 views
6

w PHP, muszę to zmienić daneKtóre użyć, concat, concat_ws? w mysql

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

do łańcucha "Smith, Robert Thomas"

Nie jestem pewien, czy muszę użyć join, concat lub concat_ws.

wiem, że jeśli używam

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

Potem dostać "Smith, Robert, Thomas", ale muszę "Smith, Robert Thomas".

Każda rada?

Odpowiedz

7

Następnie wystarczy użyć

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

CONCAT_WS służy do łączenia z jednym separatorem natomiast CONCAT dołącza ciągi razem w jakikolwiek sposób chcesz.

+0

Dziękuję, między pracą a pracą domową myślę, że mój mózg wyjechał na dzień !! .. tak prosta odpowiedź nie wiem, dlaczego nie myślałem o tym. lol .. –

+3

@ TommyCombs Pamiętaj, aby flagować odpowiedzi, są one podstawą do tego, co działa ranking, zgłaszanie odpowiedzi i przyczynianie się do przyznawania punktów, i to właśnie motywuje ludzi do kontynuowania powrotu do S-O –

13

Zdaję sobie sprawę, że jest to Necro, ale warto zauważyć, co następuje:

Zarówno CONCAT & CONCAT_WS są w dużej mierze równoważne.

Jednak najważniejszą różnicą jest to, że CONCAT może nie zwrócić oczekiwanych wyników w przypadkach, gdy dowolne z wejść ma wartość NULL. W takich przypadkach CONCAT zwróci wartość NULL, natomiast CONCAT_WS pominie wartości NULL i nadal zwróci ciąg znaków z wynikiem pozostałych danych wejściowych. Oznacza to, że w większości przypadków prawdopodobnie będziesz chciał użyć CONCAT_WS.

Poniżej są równoważne z wyjątkiem gdzie jeden lub więcej wejścia są NULL:

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

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

W przypadkach, w których chcesz używać CONCAT_WS z różnych „separatorów” wystarczy ustawić pierwsze wejście na pusty ciąg znaków:

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