2012-04-16 24 views
17

Tôi muốn hiểu cách đặt giá trị 0 của thuộc tính khi nó là NULL với hàm MAX. Ví dụ:Làm thế nào thiết lập 0 với chức năng MAX khi nó là 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 

Số là trường gia tăng, nhưng nó đã tự đặt 1 khi năm mới đến. Nhưng kết quả của:

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

là NULL và không 1 vì MAX (số) là NULL và không phải 0

Trả lời

31

Vâng, như không có ngày như năm 2014, bạn mong chờ null, vì tối đa không có gì thực sự không phải là anyting.

Nhưng làm điều này:

COALESCE(MAX(number),0) 

Có nghĩa là: có được điều phi null đầu tiên trong danh sách tiếp theo, vì vậy nếu bạn max là null, nó sẽ cung cấp cho bạn 0

+0

Cảm ơn 'rất nhiều! ;-) – Donovant

+0

Chuẩn mysql của nó hiển thị đầu ra 'null' khi không tìm thấy kết quả nào là' 0'. Bạn có thể sử dụng 'COALESCE (MAX (số), 0)' như 'Nanne' đang cho bạn biết. –

12

liên hiệp công trình, nhưng IFNULL có vẻ rõ ràng hơn với tôi.

IFNULL(MAX(number), 0) 

Nếu biểu thức đầu tiên không phải là NULL, IFNULL() trả về biểu thức, nếu không sẽ trả về tham số thứ hai. IFNULL() trả về một giá trị số hoặc chuỗi, tùy thuộc vào ngữ cảnh mà nó được sử dụng.

Các vấn đề liên quan