Есть ли в sql2000 встроенная функция, которая возвращает 0 или 0,00, если столбец money или float равен нулю? - PullRequest
1 голос
/ 08 апреля 2011

Есть ли в sql2000 простая встроенная функция, которая возвращает 0 или 0,00, если столбец типа money или float равен нулю?Или мне нужно создать функцию самостоятельно, и как бы я ее построил?если (isnull (col1)), то 0 еще col1?

1 Ответ

7 голосов
/ 08 апреля 2011

Да, функция называется ISNULL, вы используете ее так:

SELECT ISNULL(columnname, 0.0) AS xyz FROM tablename

Вы в основном указываете, какое значение возвращать в случае, если первое значение равно null.

Обратите внимание, что ISNULL не возвращает логическое значение, указывающее, является ли параметр null или нет, вместо этого вы передаете ему 2 параметра, и он выполняет следующие действия:

  1. Если первый аргумент не является null, вернуть значение первого аргумента
  2. В противном случае вернуть второй аргумент

Для этого вы также можете использовать функцию COALESCE, которая принимает неопределенное количество параметров и возвращает первое не-1020 * значение аргумента обратно в указанном порядке.

Другими словами:

ISNULL(columnname, 0.0)

и

COALESCE(columnname, 0.0)

ведет себя так же, но я не знаю, есть ли разница в "значимости" этих двух, т.е. могут ли они использовать индексы или нет.

...