-1
iif(Format(SUM(Field))='',0,SUM(Field))
SQL代码
IsNull(SUM(Field),0) As Amt
在接入码声明它清楚地表明,查询有运行SUM函数 2次得到SUM and 如果记录是空白的。
但我想知道内部SQL运行多少次SQL语句中的SUM函数? 1或2?请提供一些解释。
iif(Format(SUM(Field))='',0,SUM(Field))
SQL代码
IsNull(SUM(Field),0) As Amt
在接入码声明它清楚地表明,查询有运行SUM函数 2次得到SUM and 如果记录是空白的。
但我想知道内部SQL运行多少次SQL语句中的SUM函数? 1或2?请提供一些解释。
我的复制粘贴评论:
一次,为opposed to COALESCE:
使用子查询
ISNULL函数在 有一个重要的优势COALESCE内部它不评估输入表达式不止一次。在 与标准SQL一致,COALESCE(v1,v2)仅在内部 翻译为CASE WHEN v1 IS NOT NULL THEN v1 ELSE v2 END。作为 的结果,SQL Server可能会多次评估表达式v1,这会导致各种令人惊讶的结果。
有一次(因为[反对'COALESCE'](http://sqlmag.com/t-sql/coalesce-vs-isnull)btw,搜索“用于子查询”)。 – 2014-10-06 12:35:47
MySQL **或** MS SQL **或**两者?通常情况下,如果你有'null'值,你可以像这样使用它:'SUM(IFNULL(field,0))' - 因为它不会自动将null转换为'0'(-MySQL)。 – DanFromGermany 2014-10-06 12:36:31
只有抱歉的问题SQL – 2014-10-06 12:38:42