2014-10-06 2 views
-1

Код доступаПонимание работы функции "IsNull" в SQL

iif(Format(SUM(Field))='',0,SUM(Field)) 

код SQL

IsNull(SUM(Field),0) As Amt 

В заявлении Access Code ясно показано, что запрос имеет для запуска Функция SUM 2 раза, чтобы получить SUM и если записи пусты.

Но я хочу знать, что внутренне, сколько раз SQL работает функция SUM в операторе SQL? 1 или 2? Пожалуйста, предоставьте некоторое объяснение.

+2

Один раз (в отличие от 'COALESCE') (http://sqlmag.com/t-sql/coalesce-vs-isnull) btw, поиск« Используется с подзапросами »). –

+0

MySQL ** или ** MS SQL ** или ** оба? Обычно, если у вас есть значения «null», вы должны использовать его как: 'SUM (IFNULL (field, 0))' - потому что он не автоматически передает 'null' в' 0' (-MySQL). – DanFromGermany

+0

Извините, вопрос только SQL –

ответ

1

Моя копия вставили комментарий:

Однажды, opposed to COALESCE:

Используется с подзапросов

Функция ISNULL имеет важное преимущество перед COALESCE в этом внутренне он не оценивает входное выражение более одного раза. В в соответствии со стандартным SQL, COALESCE (v1, v2) просто внутренне переведен на CASE КОГДА v1 НЕ НУЛЬТЫЙ, чем v1 ELSE v2 END. Как результат , SQL Server может оценивать выражение v1 более одного раза, , что может привести ко всем неожиданным результатам.

Смежные вопросы