问题
I'm trying to concatenate a first
middle
maiden
and last
name fields and use that to update a single field which is named fullname
For each user any combination of these 4 fields can be filled. From 0 to all 4. However I also need a single space between each name (not multiple spaces).
UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);
回答1:
MySQL has CONCAT_WS
- concatenate with separator
CONCAT_WS(' ', first, middle, maiden, last);
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws
As pointed out by andr
below, make sure any concatenated fields contain NULL
and not an empty string (''
) otherwise you will get a double space in the output.
Fiddle: http://sqlfiddle.com/#!2/1fe83/1
Further Application
Be careful therefore if in the future you use this function to make a small CSV list, because you won't get the comma for a NULL
field. You'd have to do a COALESCE(column, '')
wrapper around each nullable column.
回答2:
empty string solution
TRIM(BOTH ' ' FROM CONCAT_WS(' ', first, middle, maiden, last))
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim
来源:https://stackoverflow.com/questions/13712423/concat-multiple-fields-to-a-single-field-single-spaced