26

我正在尝试连接 afirst middle maidenlastname 字段并使用它来更新一个名为fullname

对于每个用户,可以填写这 4 个字段的任意组合。从 0 到全部 4。但是我还需要每个名称之间有一个空格(而不是多个空格)。

UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);
4

2 回答 2

45

MySQL 有CONCAT_WS- 用分隔符连接

CONCAT_WS(' ', first, middle, maiden, last);

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, '')每个可为空的列进行包装。

于 2012-12-04T21:49:13.313 回答
6

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

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

于 2014-12-17T13:45:53.393 回答