2012-01-10 31 views
6

Trong PHP, tôi cần phải thay đổi dữ liệu nàySử dụng, concat, concat_ws nào? trong mysql

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

Into the chuỗi "Smith, Robert Thomas"

Tôi không chắc chắn nếu tôi cần phải sử dụng một join, concat hoặc concat_ws.

Tôi biết rằng nếu tôi sử dụng

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

Sau đó, tôi nhận được "Smith, Robert, Thomas" nhưng tôi cần "Smith, Robert Thomas".

Bạn có lời khuyên nào không?

Trả lời

7

Sau đó, chỉ cần sử dụng

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

CONCAT_WS được sử dụng để nối chỉ với một seperator trong khi CONCAT gắn thêm chuỗi với nhau trong bất kỳ cách nào bạn muốn.

+0

Cảm ơn bạn, giữa công việc và bài tập về nhà tôi nghĩ rằng bộ não của tôi đã để lại trong ngày !! .. một câu trả lời đơn giản như vậy không biết tại sao tôi không nghĩ về nó. lol .. –

+3

@TommyCombs Hãy nhớ gắn cờ câu trả lời, chúng là nền tảng cho công việc xếp hạng, gắn cờ câu trả lời và đóng góp cho điểm và đây là động cơ khiến mọi người tiếp tục quay lại S-O –

13

Tôi nhận ra đây là một hoại nhưng nó là đáng chú ý như sau:

Cả CONCAT & CONCAT_WS phần lớn tương đương.

Tuy nhiên, sự khác biệt đáng chú ý nhất là CONCAT có thể không trả lại kết quả bạn mong đợi cho các trường hợp bất kỳ đầu vào nào là NULL. Trong những trường hợp này, CONCAT sẽ trả về NULL trong khi CONCAT_WS sẽ bỏ qua giá trị NULL và vẫn trả về một chuỗi với kết quả của các đầu vào còn lại. Điều này có nghĩa là trong hầu hết các trường hợp, có thể bạn sẽ muốn sử dụng CONCAT_WS.

Sau đây là tương đương, trừ trường hợp một hoặc nhiều đầu vào là NULL:

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

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

Trong trường hợp bạn muốn sử dụng CONCAT_WS với 'tách' khác nhau chỉ cần đặt đầu vào đầu tiên một chuỗi rỗng:

// Result: LastName, FirstName (MiddleName) 
CONCAT_WS('', LastName, ', ', FirstName, ' (', MiddleName, ')') 
Các vấn đề liên quan