【发布时间】:2010-09-18 09:48:24
【问题描述】:
什么是 MySQL 等效于 Microsoft Access 中的 Nz 函数? Nz 是 SQL 标准吗?
在 Access 中,Nz 函数允许您在变量为空时返回一个值。 Source
Nz 函数的语法是:
Nz ( variant, [ value_if_null ] )
【问题讨论】:
标签: sql mysql database ms-access
什么是 MySQL 等效于 Microsoft Access 中的 Nz 函数? Nz 是 SQL 标准吗?
在 Access 中,Nz 函数允许您在变量为空时返回一个值。 Source
Nz 函数的语法是:
Nz ( variant, [ value_if_null ] )
【问题讨论】:
标签: sql mysql database ms-access
COALESCE() 函数符合您的描述。它是标准 SQL,应该在所有 SQL 数据库中都支持。
IFNULL() 函数不是标准 SQL。只有部分品牌的数据库支持此功能。
【讨论】:
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。
【讨论】:
您可能想查看IFNULL 或COALESCE。如果我没记错的话,IFNULL 适用于 MySQL。
【讨论】:
看看 null 安全运算符
也许会有所帮助: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_equal-to
【讨论】:
也许了解 MS Access NZ() 函数的实际作用会有所帮助(在回答完全无效的建议之前)。 NZ() 函数测试 Null 并将 Null 替换为空字符串、零或用户输入的可选值。
COALESCE 甚至没有接近,事实上,如果'List???'中没有任何 Null 值,它会返回 Null
IFNULL() 函数就是你要找的。p>
http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html
【讨论】: