我正在尝试连接 afirst
middle
maiden
和last
name 字段并使用它来更新一个名为fullname
对于每个用户,可以填写这 4 个字段的任意组合。从 0 到全部 4。但是我还需要每个名称之间有一个空格(而不是多个空格)。
UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);
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, '')
每个可为空的列进行包装。
空字符串解决方案
TRIM(BOTH ' ' FROM CONCAT_WS(' ', first, middle, maiden, last))
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim