Я бы использовал CONCAT_WS.Например:
SELECT CONCAT_WS(' ', NULL, 'First', NULL, 'Last', NULL);
Будет возвращена строка «Первый последний» без пробелов, кроме тех, которые CONCAT_WS поместил между двумя строками, которые не равны NULL.
Первый аргументCONCAT_WS - это клей, который появляется между ненулевыми значениями.
В вашем случае это будет:
SELECT CONCAT_WS(' ', forename, initials, surname) AS name FROM users;
Отсюда:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws
Редактировать: Это работает только в MySQL.