在PHP中,我需要更改此数据
FirstName | MiddleName | LastName
---------------------------------
Robert | Thomas | Smith
进入字符串“Smith,Robert Thomas”
我不确定是否需要使用join
,concat
或concat_ws
。
我知道如果我使用
concat_ws(', ',LastName,FirstName,MiddleName)
然后我得到“史密斯,罗伯特,托马斯”,但我需要“史密斯,罗伯特托马斯”。
有什么建议吗?
答案 0 :(得分:20)
我意识到这是一个死灵,但值得注意以下几点:
CONCAT
& CONCAT_WS
在很大程度上是等同的。
但是,最值得注意的区别是,CONCAT
可能不会返回任何输入为NULL的情况下您期望的结果。在这些情况下,CONCAT
将返回NULL,而CONCAT_WS
将跳过NULL值,并仍返回包含其余输入结果的字符串。这意味着在大多数情况下,您可能希望使用CONCAT_WS
。
以下是等效的,除非一个或多个输入为NULL:
// 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, ')' )
答案 1 :(得分:8)
然后使用
CONCAT(LastName, ', ', FirstnName, ' ', MiddleName)
CONCAT_WS用于仅与一个分隔符连接,而CONCAT以任何您想要的方式将字符串附加在一起。
答案 2 :(得分:0)
像这样写SQL以获得所需的结果:
SELECT CONCAT_WS(', ', author_lname, CONCAT(author_fname,' ', author_lastname)) AS info FROM books;
它将返回输出:
史密斯,詹姆斯·布莱克