2008-10-21 89 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。

相关问题