2012-01-10 48 views
6

在PHP中,我需要改變這個數據要使用哪個,concat,concat_ws?在MySQL

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

到字符串「史密斯,羅伯特·托馬斯」

我不知道我是否需要使用joinconcatconcat_ws

我知道,如果我用

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

然後我得到「史密斯,羅伯特·托馬斯」但我需要「史密斯,羅伯特·托馬斯」。

有什麼建議嗎?

回答

7

就用

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

CONCAT_WS僅用於與一個分隔符來連接,而CONCAT在任何你想要的附加串在一起。

+0

謝謝你,在工作和家庭作業之間,我想我的大腦已經離開了這一天!! ..這樣一個簡單的答案不知道爲什麼我沒有想到它。大聲笑.. – 2012-01-10 19:18:58

+3

@TommyCombs記住標記答案,他們是什麼排名工作的基礎,標記答案和貢獻給分,這就是人們繼續回到S-O的動機 – 2012-01-10 19:53:05

13

我意識到這是一個死靈,但值得注意的是以下幾點:

兩個CONCAT & CONCAT_WS在很大程度上是等同。

但是,最值得注意的區別是CONCAT在任何輸入爲NULL的情況下可能不會返回您期望的結果。在這些情況下,CONCAT將返回NULL,而CONCAT_WS將跳過NULL值並仍然返回一個字符串和剩餘輸入的結果。這意味着在大多數情況下,您可能會想要使用CONCAT_WS

以下是除非一個或多個輸入都爲空等價的:

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

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

在要使用CONCAT_WS不同的「分隔符」剛剛成立的第一個輸入一個空字符串的情況:

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