2012-04-19 14 views
6

मुझे अधिकतम मान (रैंक) चुनने के लिए जेपीक्यूएल (2.0) में एक क्वेरी बनाने की आवश्यकता है।खाली तालिका के लिए "चयन से अधिकतम चयन (रैंक)" के नल परिणाम से कैसे बचें?

मैं का उपयोग करें: SELECT max(rank) FROM test

यह ठीक काम करता है, इस मामले में जहां तालिका खाली है सिवाय, तो परिणाम null है, लेकिन मैं 0 की जरूरत है।

यदि कोई आसान if-statement के साथ शून्य को "पकड़ने" में सक्षम था, तो यह कोई समस्या नहीं होगी, लेकिन मैं यह नहीं कर सकता (ढांचा केवल एक जेपीए क्वेरी निर्दिष्ट करने की अनुमति देता है लेकिन कोई जावा कोड नहीं)।

क्या किसी को पता है कि null के बजाय 0 प्राप्त करने के लिए उस क्वेरी को कैसे ट्यून करना है यदि तालिका खाली है? - डेटाबेस एक MySQL है, और मूल प्रश्न या संग्रहित प्रक्रियाएं कोई विकल्प नहीं हैं।

+0

@Frosty जेड: हटाए जाने? – zerkms

+0

क्योंकि यह एक मूल क्वेरी है (मुझे लगता है कि जेपीक्यूएल इस तरह को कोल्सिस की अनुमति नहीं देता है) –

+3

कोई मूल प्रश्न नहीं, कोई संग्रहित प्रो नहीं है, आप एक सरल 'अगर (ret == null) ret = 0; 'प्रकार का नहीं कर सकते चीज़। मैं उत्सुक हूँ, सभी प्रतिबंध क्यों? ऐसा लगता है कि आप जानबूझकर अपनी पीठ के पीछे अपने हाथ बांध रहे हैं। – pap

उत्तर

7

शायद:

SELECT COALESCE(MAX(rank), 0) FROM test 

संपादित

COALESCE JPQL (जेपीए 2.0) द्वारा समर्थित लगता है: http://java.sun.com/developer/technicalArticles/JavaEE/JavaEE6Overview_Part3.html

+0

10 सेकंड से अधिक तेज़ कॉन्फ़िगर कर सकता हूं :) –

+0

अनदेखा करना लेकिन यह मूल क्वेरी है और ओपी ने कहा कि यह एक विकल्प नहीं है ... –

+0

यह सही काम करता है, बहुत बहुत धन्यवाद। – Ralph

संबंधित मुद्दे