web-dev-qa-db-ja.com

CONCAT複数のフィールドを単一のフィールドに、単一のスペースで

firstmiddlemaidenlastの名前フィールドを連結して、fullnameという名前の単一のフィールドを更新しようとしています。

ユーザーごとに、これら4つのフィールドの任意の組み合わせを入力できます。 0から4まで。ただし、各名前の間に1つのスペースが必要です(複数のスペースではありません)。

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

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が含まれていることを確認してください。

フィドル: http://sqlfiddle.com/#!2/1fe83/1

さらなる応用

したがって、将来この関数を使用して小さなCSVリストを作成する場合は注意してください。NULLフィールドのコンマは取得されません。ヌル可能列ごとにCOALESCE(column, '')ラッパーを実行する必要があります。

37
akatakritos

空の文字列ソリューションTRIM(BOTH ' ' FROM CONCAT_WS(' ', first, middle, maiden, last))

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

4
jasz24