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);
To concatenate more than 2 fields with SQL, you can use CONCAT() or CONCAT_WS() function.
Do it with two concats: select concat(concat(amt, '-'), endamt) as amount from mstcatrule; concat(amt,'-') concatenates the amt with the dash and the resulting string is concatenated with endamt .
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
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With