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