2012-04-16 1 views
17

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

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

ответ

31

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

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

COALESCE(MAX(number),0) 

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

+0

Спасибо большое! ;-) – Donovant

+0

Его mysql-стандарт, который показывает вывод 'null', когда результата нет, не найдено' 0'. Вы можете использовать 'COALESCE (MAX (number), 0)' like 'Nanne' говорит вам. –

12

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

IFNULL(MAX(number), 0) 

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