-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