Подтвердить что ты не робот

Несколько полей CONCAT для одного поля, одноразовые

Я пытаюсь объединить поля first middle maiden и last и использовать это, чтобы обновить одно поле с именем fullname

Для каждого пользователя можно заполнить любую комбинацию из этих 4 полей. От 0 до всех 4. Однако мне также нужно одно пространство между каждым именем (не несколькими пробелами).

UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);
4b9b3361

Ответ 1

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, а не пустую строку (''), иначе вы получите двойное пространство на выходе.

Fiddle: http://sqlfiddle.com/#!2/1fe83/1

Дальнейшее применение

Будьте осторожны, если в будущем вы будете использовать эту функцию для создания небольшого списка CSV, потому что вы не получите запятую для поля NULL. Вам нужно сделать обертку COALESCE(column, '') вокруг каждого столбца с нулевым значением.