2010-01-25 136 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