2010-01-25 138 views
2

我有两个字段,但我只想返回非空字段。mySQL返回不空字段

select firstname, lastname, (if firstname != empty, then firstname else lastname) as name from users; 

我该如何去做类似上面的事情。我不确定圆括号里面应该是什么。我不想使用PHP后期处理。

回答

3

这既适用于null值以及空字符串(''

SELECT IF(LENGTH(firstname), firstname, lastname) as name from users; 
6

有几种方法可以在MySQL中做到这一点。

您可以使用coalesce()函数,它返回参数中的第一个非空值。

select coalesce(firstname, lastname) as name from users; 

或者,你可以使用一个case statement

select case when firstname is not null then firstname else lastname end as name from users; 

或者你可以使用if()功能:

select if(firstname is not null, firstname, lastname) as name from users; 

或者你可以使用ifnull()功能:

select ifnull(firstname, lastname) as name from users; 
+0

你的回答也是完美的。我希望我能接受这两个。抱歉! – 2010-01-25 06:44:11

+0

@Alec Smart:没关系。重要的是你的问题得到了正确的答案。 – Asaph 2010-01-25 06:45:51