2009-09-07 14 views
18

में निकटतम पूर्ण संख्या के लिए राउंड अप वैल्यू मैं एसक्यूएल चला रहा हूं जिसके लिए मूल्य को निकटतम पूर्ण संख्या में गोल करने की आवश्यकता है।एसक्यूएल अपडेट

मुझे 45.01 राउंड 46 की आवश्यकता है। 45.4 9 राउंड 46 से 46. और 45.99 राउंड 46 तक भी हैं। मैं सब कुछ एक पूरे अंक चाहते हैं।

मैं इसे निम्न जैसे अद्यतन विवरण में कैसे प्राप्त करूं?

Update product SET price=Round 

उत्तर

23

आप ceil समारोह इस्तेमाल कर सकते हैं कम से कम MySQL पर; एसक्यूएल कोड का यह हिस्सा:

select ceil(45.01), ceil(45.49), ceil(45.99); 

आपको हर बार "46" मिलेगा।

अपने अद्यतन के लिए, हां, तो मैं कहता हूँ चाहते हैं:

Update product SET price = ceil(45.01) 


Btw: MySQL पर, ceilceiling को एक उपनाम है; यकीन नहीं अन्य डीबी प्रणालियों के बारे में, आप एक या अन्य, डीबी प्रयोग कर रहे हैं पर निर्भर करता है ...


प्रलेखन का हवाला देते हुए उपयोग करने के लिए हो सकता है तो:

CEILING(X)

रिटर्न छोटी से छोटी पूर्णांक मान एक्स

और दिए गए उदाहरण से कम नहीं :

mysql> SELECT CEILING(1.23); 
     -> 2 
mysql> SELECT CEILING(-1.23); 
     -> -1 
2

यह डेटाबेस सर्वर पर निर्भर करता है, लेकिन इसे अक्सर CEIL या CEILING जैसे कुछ कहा जाता है। उदाहरण के लिए, MySQL में ...

mysql> select ceil(10.5); 
+------------+ 
| ceil(10.5) | 
+------------+ 
|   11 | 
+------------+ 

फिर आप क्या कर सकते हैं UPDATE PRODUCT SET price=CEIL(some_other_field);

+0

स्टैक ओवरफ्लो में आपका स्वागत है! चार रिक्त स्थान इंडेंट किए गए किसी भी कोड को कोड के रूप में स्वरूपित किया गया है, आप संपादक में ऐसा करने के लिए बाइनरी अंकों वाले बटन का उपयोग कर सकते हैं। आशा है कि आप मुझे ऐसा करने के लिए अपने जवाब को ठीक करने में कोई फर्क नहीं पड़ता! –

3

आप तो दौर दौर समारोह उपयोग करना चाहते हैं। जब आप अपने तर्क से थोड़ा छोटा इंटीजर प्राप्त करना चाहते हैं तो छत समारोह का उपयोग करें।

पूर्व के लिए: दौर का चयन करें (843.4923423423,0) दोहरी से आप 843 और

देता

चयन दौर (843.6923423423,0) से दोहरे आप 844

+0

क्या होगा यदि आप सिर्फ निकटतम पैसा तक जाना चाहते हैं? यदि कर देय $ 13.052 है, तो मुझे इसे $ 13.053 तक ले जाना होगा। मैं छत() का उपयोग कर सकता था, लेकिन मुझे 100 से पहले एकाधिक करना होगा, फिर 100 से विभाजित करना होगा। लंगड़ा लगता है। – datagod

4

देता एमएस एसक्यूएल छत के लिए (आपका नंबर) इसे गोल करेगा। मंजिल (आपका नंबर) इसे

3

छत वह आदेश है जिसका आप उपयोग करना चाहते हैं।

दौर के विपरीत, छत केवल एक पैरामीटर (वह मान जिसे आप गोल करना चाहते हैं) लेते हैं, इसलिए यदि आप दशमलव स्थान पर गोल करना चाहते हैं, तो आपको पहले उस दशमलव स्थान से संख्या को गुणा करना होगा और बाद में विभाजित करना होगा।

उदाहरण।

मैं 1.2345 से 2 दशमलव स्थानों तक घूमना चाहता हूं।

CEILING(1.2345*100)/100 AS Cost 
संबंधित मुद्दे