Вопрос по max, mysql – Как установить 0 с функцией MAX, когда оно равно NULL?

25

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

<code>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
</code>

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

<code>SELECT (MAX(number)+1) number WHERE date LIKE "2014%" 
</code>

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

Ваш Ответ

2   ответа
40

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

Но сделай это:

COALESCE(MAX(number),0)

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

Это стандарт MySQL, который показывает выводnull когда нет результата не найдено не0. Вы можете использоватьCOALESCE(MAX(number),0) нравитсяNanne говорит тебе. Ankit Sharma
Спасибо! ; -) Donovant
19

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

IFNULL(MAX(number), 0)

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

Похожие вопросы