2008-10-21 112 views

回答

11

COALESCE()函數執行您所描述的操作。它是標準的SQL,它應該在所有SQL數據庫中受支持。

IFNULL()函數不是標準SQL。只有一些品牌的數據庫支持這個功能。

3

你可能想看看IFNULLCOALESCE。如果我沒有記錯,IFNULL適用於MySQL。

+0

IFNULL是MySQL的等價物。 – 2008-10-21 20:20:03

0

也許知道MS Access NZ()函數實際上會做什麼會有幫助(在回答完全無效的建議之前)。 NZ()函數用於測試Null,並用空字符串,Zero或用戶輸入的值(可選)替換Null。

COALESCE甚至沒有接近,實際上它返回一個Null,如果沒有沒有空值'List ???'

IFNULL()函數就是你要找的。

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html

+2

使用COALESCE的想法是,您將最後一個值設爲您的默認非空值:COALESCE(MightBeNull,MightAlsoBeNull,CouldBeNull,'DefaultValue')... – diamondsea 2013-05-10 20:06:47

2

COALESCE不只是什麼OP是要求一樣,IFNULL:

SELECT Nz(MightBeNullVar, 0) FROM ... (MS Access version) 
SELECT COALESCE(MightBeNullVar, 0) FROM ... (MySQL version) 
SELECT IFNULL(MightBeNullVar, 0) FROM ... (MySQL version) 

的區別是COALESCE可以通過多種變量,搜索和返回第一個非空一個:

SELECT COALESCE(MightBeNullVar, MightAlsoBeNullVar, CouldBeNullVar, 0) FROM ... (MySQL version) 

如果沒有任何值具有設置值(爲空),這些函數中的每一個都將返回0(零)。

IFNULL(非常無​​意義)更快。在干擾IFNULL和COALESCE問題之前,可能還有其他更好的事情需要在查詢中進行優化。如果您有多件事要檢查,請使用COALESCE。如果您只有一個值來檢查,請使用IFNULL。

相關問題