J'essaie de concaténer un champ de nom first
middle
maiden
et last
et de l'utiliser pour mettre à jour un seul champ nommé fullname
Pour chaque utilisateur, n'importe quelle combinaison de ces 4 champs peut être remplie. De 0 à tous les 4. Cependant, j'ai également besoin d'un seul espace entre chaque nom (pas de plusieurs espaces).
UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);
MySQL a CONCAT_WS
- concaténer avec le séparateur
CONCAT_WS(' ', first, middle, maiden, last);
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws
Comme indiqué par andr
ci-dessous, assurez-vous que tous les champs concaténés contiennent NULL
et non une chaîne vide (''
) Sinon vous obtiendrez un double espace dans la sortie.
Violon: http://sqlfiddle.com/#!2/1fe83/1
Soyez donc prudent si à l'avenir vous utilisez cette fonction pour faire une petite liste CSV, car vous n'obtiendrez pas la virgule pour un champ NULL
. Vous devriez faire un wrapper COALESCE(column, '')
autour de chaque colonne nullable.
solution de chaîne vide TRIM(BOTH ' ' FROM CONCAT_WS(' ', first, middle, maiden, last))
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim