2010-07-09 115 views
34

我有,我想做出選擇有條件這樣MySQL的IFNULL ELSE

IFNULL(field_a,field_a,feild_b) 

,以便它檢查領域,如果爲null,則選擇將字段B

是SELECT語句可能嗎?

回答

68

使用COALESCE

SELECT COALESCE(field_a, field_b) 

COALESCE是返回從指定的列的列表中的第一個非空值,處理列從左至右的ANSI標準功能。因此在該示例中,如果field_a爲空,則將顯示值field_b。但是,如果指定的列中沒有非空值,則此函數將返回NULL。

它支持MySQL的(我用它在4.1),SQL服務器(因爲V2000),甲骨文9I + ...

+3

我支持使用COALESCE的爲好。 – 2010-07-09 18:40:32

+0

功能如何工作的清晰解釋...謝謝!更新了斷開的鏈接。 – Andrew 2015-10-20 20:37:51

34

是的,但它只是兩個參數:

IFNULL(field_a,field_b) 

如果field_a不爲空,它將被返回。否則將返回field_b

參考:IFNULL

28

和另一種方式來皮膚貓(flexible的不只是空的比較)...

select if(field_a is not null, field_a, field_b) from... 
+1

最佳答案。允許做'選擇if(名稱不爲空,CONCAT('name is:',name),'');' – Apolo 2014-11-04 14:06:29

+0

'select IFNULL(column,'default')'也可以。看到這裏:http://sqlfiddle.com/#!9/14b752/1/0 – Arda 2015-12-17 10:48:32