Как установить 0 с помощью функции MAX, когда она равна NULL?
Я хотел бы понять, как установить значение 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
Ответы
Ответ 1
Ну, так как нет такой даты, как 2014, вы ожидали бы нуль, потому что максимум ничего на самом деле не имеет значения.
Но сделайте следующее:
COALESCE(MAX(number),0)
Что означает: получить первую ненулевую вещь из следующего списка, поэтому, если ваш max
имеет значение null, он даст вам 0
Ответ 2
COALESCE работает, но IFNULL кажется мне более ясным.
IFNULL(MAX(number), 0)
Если первое выражение не является NULL, IFNULL() возвращает само выражение, в противном случае он возвращает второй параметр.
IFNULL() возвращает числовое или строковое значение в зависимости от контекста, в котором он используется.