webentwicklung-frage-antwort-db.com.de

CONCAT mehrere Felder zu einem einzigen Feld, mit einem einzigen Abstand

Ich versuche, die Namensfelder firstmiddlemaiden und last zu verketten und verwende dies, um ein einzelnes Feld mit dem Namen fullname

Für jeden Benutzer kann eine beliebige Kombination dieser 4 Felder ausgefüllt werden. Von 0 bis alle 4. Ich benötige jedoch auch ein einzelnes Leerzeichen zwischen jedem Namen (nicht mehrere Leerzeichen).

UPDATE nameTable SET fullname = CONCAT(first, middle, maiden, last);
22
kylex

MySQL hat CONCAT_WS - mit Trennzeichen verkettet

CONCAT_WS(' ', first, middle, maiden, last);

http://dev.mysql.com/doc/refman/5.0/de/string-functions.html#function_concat-ws

Stellen Sie, wie in andr unten angegeben, sicher, dass alle verketteten Felder NULL und keine leere Zeichenfolge ('') Enthalten, da Sie sonst ein doppeltes Leerzeichen in der Ausgabe erhalten.

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

Weitere Anwendung

Seien Sie daher vorsichtig, wenn Sie diese Funktion in Zukunft verwenden, um eine kleine CSV-Liste zu erstellen, da Sie kein Komma für ein NULL - Feld erhalten. Sie müssten einen Wrapper COALESCE(column, '') um jede nullfähige Spalte erstellen.

37
akatakritos

leere Zeichenfolge Lösung TRIM(BOTH ' ' FROM CONCAT_WS(' ', first, middle, maiden, last))

http://dev.mysql.com/doc/refman/5.0/de/string-functions.html#function_trim

4
jasz24