将多个字段CONCAT到单个字段,单个间隔

kyl*_*lex 22 mysql concat

我正在尝试连接a first middle maidenlastname字段,并使用它来更新命名的单个字段fullname

对于每个用户,可以填充这4个字段的任何组合.从0到全部4.但是我还需要在每个名称之间留出一个空格(不是多个空格).

UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);
Run Code Online (Sandbox Code Playgroud)

aka*_*tos 38

MySQL有CONCAT_WS- 与分隔符连接

CONCAT_WS(' ', first, middle, maiden, last);
Run Code Online (Sandbox Code Playgroud)

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws

正如指出的andr下方,确保任何级联字段包含NULL,而不是一个空字符串(''),否则你会得到输出的双重空间.

小提琴:http://sqlfiddle.com/#!2/1fe83/1

进一步申请

因此,如果将来使用此函数创建一个小的CSV列表,请注意,因为您不会获得NULL字段的逗号.你必须COALESCE(column, '')围绕每个可空列进行包装.


小智 6

空字符串解决方案 TRIM(BOTH ' ' FROM CONCAT_WS(' ', first, middle, maiden, last))

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim