CONCAT multiple fields to a single field, single spaced

流过昼夜 提交于 2019-11-30 00:27:37

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!