2012-04-16 27 views
17

मैं समझना चाहता हूं कि गुण के 0 मान को कैसे सेट करें जब यह MAX फ़ंक्शन के साथ नल हो। उदाहरण के लिए:MAX फ़ंक्शन के साथ 0 सेट कैसे होता है जब यह पूर्ण होता है?

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%" 

शून्य है और नहीं 1 क्योंकि मैक्स (संख्या) शून्य है और न 0

उत्तर

31

ठीक है, वहाँ के रूप में 2014 की तरह कोई तिथि नहीं है, तो आप अशक्त, उम्मीद करेंगे की वजह से अधिकतम वास्तव में कुछ भी नहीं है।

लेकिन ऐसा करते हैं:

COALESCE(MAX(number),0) 

जिसका मतलब है: अगले सूची से पहले गैर-शून्य बात मिलता है, इसलिए यदि आपके max रिक्त है, तो यह आपको दे देंगे 0

+0

धन्यवाद 'बहुत कुछ! ;-) – Donovant

+0

इसका MySQL मानक जो आउटपुट 'नल' दिखाता है जब कोई परिणाम नहीं होता है तो '0' नहीं मिलता है। आप 'COANESCE (MAX (संख्या), 0) का उपयोग कर सकते हैं जैसे' नैन' आपको बता रहा है। –

12

COALESCE काम करता है, लेकिन IFNULL मुझे स्पष्ट लगता है।

IFNULL(MAX(number), 0) 

पहली अभिव्यक्ति शून्य नहीं है, तो IFNULL() अभिव्यक्ति ही देता है, अन्यथा यह दूसरा पैरामीटर देता है। IFNULL() उस संदर्भ के आधार पर एक संख्यात्मक या स्ट्रिंग मान देता है जिसमें इसका उपयोग किया जाता है।