Как установить 0 с помощью функции MAX, когда она равна NULL?

19

Я хотел бы понять, как установить значение 0 атрибута, когда он равен NULL с функцией MAX. Например:

Name columns:
number - date

Values:
10 - 2012-04-04
11 - 2012-04-04
12 - 2012-04-04
13 - 2012-04-15
14 - 2012-06-21
 1 - 2013-07-04

Число - это инкрементное поле, но оно установило 1, когда наступил новый год. Но результат:

SELECT (MAX(number)+1) number WHERE date LIKE "2014%" 

- NULL, а не 1, потому что MAX (число) NULL, а не 0

    
задан Donovant 16.04.2012 в 12:08
источник

2 ответа

31

Ну, так как нет такой даты, как 2014, вы ожидали бы нуль, потому что максимум ничего на самом деле не имеет значения.

Но сделайте следующее:

COALESCE(MAX(number),0)

Это означает: получить первую ненулевую вещь из следующего списка, поэтому, если ваш max имеет значение null, он даст вам 0

    
ответ дан Nanne 16.04.2012 в 12:10
источник
  • Его mysql-стандарт, который показывает вывод null, когда нет результата, найден не 0. Вы можете использовать COALESCE (MAX (число), 0), как говорит вам Nanne. –  Ankit Sharma 16.04.2012 в 12:16
  • Спасибо, столько! ;-) –  Donovant 16.04.2012 в 12:18
14

COALESCE работает, но IFNULL кажется мне понятнее .

IFNULL(MAX(number), 0)

Если первое выражение не является NULL, IFNULL () возвращает само выражение, в противном случае он возвращает второй параметр. IFNULL () возвращает числовое или строковое значение в зависимости от контекста, в котором он используется.

    
ответ дан Demis Palma ツ 24.10.2014 в 13:28
источник