Скажем, у меня есть простая функция в MySQL:
SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'
Если никакие записи в Column_
2 не содержат текст «Test», то эта функция возвращается NULL
, в то время как я хотел бы, чтобы она возвращала 0.
Я знаю, что подобный вопрос задавался здесь несколько раз, но я не смог адаптировать ответы к своим целям, поэтому я был бы благодарен за некоторую помощь, чтобы разобраться в этом.
Ответы:
Используйте,
COALESCE
чтобы избежать этого результата.Чтобы увидеть это в действии, пожалуйста, посмотрите эту скрипту sql: http://www.sqlfiddle.com/#!2/d1542/3/0
Больше информации:
Имеются три таблицы (одна со всеми числами, одна со всеми нулями и одна со смесью):
SQL Fiddle
Настройка схемы MySQL 5.5.32 :
Запрос 1 :
Результаты :
источник
SUM
работает так , как нужно,AVG
иCOUNT
может давать разные результаты при получении,NULL
предлагая использоватьCOALESCE
в соответствии с предложением @DarkSide, в зависимости от желаемого результата.Используйте
IFNULL
илиCOALESCE
:Разница между ними заключается в том, что
IFNULL
это расширение MySQL, которое принимает два аргумента, иCOALESCE
является стандартной функцией SQL, которая может принимать один или несколько аргументов. Когда у вас есть только два аргумента, использованиеIFNULL
немного быстрее, хотя здесь разница незначительна, так как он вызывается только один раз.источник
IFNULL
илиCOALESCE
?? не могли бы вы объяснить это ??coalesce
.Не могу получить именно то, что вы просите, но если вы используете агрегатную функцию SUM, которая подразумевает, что вы группируете таблицу.
Запрос идет для MYSQL, как это
источник