5

私はこれを持っています:

SELECT CONCAT(forename,' ',IFNULL(initials, ''),' ',surname) AS name FROM users

イニシャル フィールドが null の場合、その後にスペースが含まれないように変更するにはどうすればよいですか?

4

3 に答える 3

7
SELECT CONCAT(forename,' ',IFNULL(CONCAT(initials,' '), ''),surname) AS name FROM users
于 2011-02-15T10:25:11.260 に答える
1

CONCAT_WS を使用します。例えば:

SELECT CONCAT_WS(' ', NULL, 'First', NULL, 'Last', NULL);

これは、1 つの CONCAT_WS が NULL ではない 2 つの文字列の間に配置した以外の場所にスペースを含まない文字列 "First Last" を返します。

CONCAT_WS の最初の引数は、NULL 以外の値の間に現れる接着剤です。

あなたの場合、これは次のようになります。

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 でのみ機能します。

于 2012-10-01T11:16:05.160 に答える
0

Use SELECT CONCAT(forename, ' ', CASE WHEN initials IS NULL THEN '' ELSE initials || ' ' END, surname) ...

于 2011-02-15T10:24:21.027 に答える