Ich versuche, die Namensfelder first
middle
maiden
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);
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
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.
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