哪个用,concat,concat_ws?在mysql中

Tom*_*mbs 11 php mysql

在PHP中,我需要更改此数据

FirstName | MiddleName | LastName
---------------------------------
Robert    | Thomas     | Smith
Run Code Online (Sandbox Code Playgroud)

进入字符串"史密斯,罗伯特托马斯"

我不确定我是否需要使用join,concatconcat_ws.

我知道,如果我使用

concat_ws(', ',LastName,FirstName,MiddleName)
Run Code Online (Sandbox Code Playgroud)

然后我得到"史密斯,罗伯特,托马斯",但我需要"史密斯,罗伯特托马斯".

有什么建议?

Pre*_*tic 23

我意识到这是一个死灵,但值得注意以下几点:

这两个CONCATCONCAT_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 )
Run Code Online (Sandbox Code Playgroud)

如果您想使用CONCAT_WS不同的'分隔符',只需将第一个输入设置为空字符串:

// Result: LastName, FirstName (MiddleName)
CONCAT_WS( '', LastName, ', ', FirstName, ' (', MiddleName, ')' )
Run Code Online (Sandbox Code Playgroud)


Mat*_*lin 8

然后就用吧

CONCAT(LastName, ', ', FirstnName, ' ', MiddleName)
Run Code Online (Sandbox Code Playgroud)

CONCAT_WS用于仅与一个分隔符连接,而CONCAT以任何您想要的方式将字符串附加在一起.

  • @TommyCombs记得标记答案,它们是排名工作的基础,标记答案和贡献给出分数,这就是人们继续回归SO的动机 (4认同)