SQL CONCAT与IF语句的结合

5

我有这个:

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

如何更改代码,使得当“initials”字段为空时,它也不会在此字段后面包含空格?
3个回答

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

3

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

该查询语句是用于将名、中间名和姓拼接在一起。如果有中间名,则会包含在内,否则不会。

1
我会使用CONCAT_WS。例如:
SELECT CONCAT_WS(' ', NULL, 'First', NULL, 'Last', NULL);

此代码将返回字符串 "First Last",除了两个不为 NULL 的字符串之间 CONCAT_WS 添加的一个空格外,其它地方都没有空格。

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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接