2010-07-15 245 views
17

我希望能够做这样的事如何在MYSQL查询中获取名字和姓氏的全名?

SELECT `first_name` + " " + `last_name` as `whole_name` FROM `users` 

所以基本上我得到一列回whole_name这是first_namelast_name(空间)连接在一起。

我该如何在SQL或更具体的MySQL中做到这一点?

回答

40

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

SELECT CONCAT_WS(" ", `first_name`, `last_name`) AS `whole_name` FROM `users` 
+4

+1:CONCAT也可以工作得很好:'CONCAT(first_name,'',last_name)AS whole_name' – 2010-07-15 01:20:55

+9

当你有一个带NULL的字段(例如:中间名)时,CONCAT_WS是安全的。 如果任何连接字段为null,CONCAT将返回NULL – 2012-10-14 09:11:51

0

当你有三列:名字,姓氏,mid_name:

SELECT CASE 
    WHEN mid_name IS NULL OR TRIM(mid_name) ='' THEN 
     CONCAT_WS(" ", first_name, last_name) 
    ELSE 
     CONCAT_WS(" ", first_name, mid_name, last_name) 
    END 
FROM USER; 
0

您可以使用查询来获得相同的:

SELECT CONCAT(FirstName , ' ' , MiddleName , ' ' , Lastname) AS Name FROM TableName; 

注意:如果所有列都具有某个值(如果任何人为null或空),则此查询将返回,那么它将返回null all,表示名称将返回“NULL”

为避免上述情况,我们可以使用IsNull关键字来获得相同的结果。

SELECT Concat(Ifnull(FirstName,' ') ,' ', Ifnull(MiddleName,' '),' ', Ifnull(Lastname,' ')) FROM TableName; 

如果任何包含空值的''(空格)将添加下一个值。

相关问题