我正在尝试连接一个first
middle
maiden
并last
名称字段,并使用它来更新名为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
字段的逗号。您必须在每个可为 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