5

我有这个:

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

如何更改它,以便如果 initials 字段为 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);

这将返回字符串“First Last”,除了一个 CONCAT_WS 在两个非 NULL 字符串之间放置了一个空格之外,其他任何地方都没有空格。

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

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

于 2011-02-15T10:24:21.027 回答