带有IF语句的SQL CONCAT

时间:2011-02-15 10:22:08

标签: sql concat

我有这个:

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

如何更改它,以便如果initials字段为null,它也不包括后面的空格?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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。

答案 2 :(得分:0)

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