2013-02-18 44 views
5

मेरे MySQL डेटाबेस में मेरे पास फ़ील्ड DECIMAL (23,5) है, इसलिए दशमलव बिंदु के बाद 5 अंक हैं। अब, जब मैं इस तरह क्वेरी करेगा:MySQL दशमलव: गोल के बजाय मंजिल

UPDATE my_table SET my_decimal_field = 123.123456789 WHERE id = 1 

और फिर मैं इस रिकॉर्ड को लायेगा:

+------+------------------+ 
| id | my_decimal_field | 
+------+------------------+ 
| 5733 | 123.12346  | 
+------+------------------+ 

तो, निश्चित रूप से, MySQL है:

SELECT id, my_decimal_field FROM gijhars WHERE id = 1 

मैं इस परिणाम मिलता है गोलाकार इन मानों, यदि उनके पास दशमलव बिंदु के बाद 6 से अधिक अंक हैं। क्या MySQL में फर्श इन मानों को गोल करने की बजाय कोई सेटिंग है?

+2

http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html _When इस तरह के एक स्तंभ निम्नलिखित अधिक अंकों के साथ एक मूल्य असाइन किया गया है परमी की तुलना में दशमलव बिंदु है निर्दिष्ट पैमाने से tted, मूल्य उस पैमाने में परिवर्तित कर दिया जाता है। (सटीक व्यवहार सिस्टम-विशिष्ट ऑपरेटिंग है, लेकिन आम तौर पर प्रभाव अंकों की अनुमत संख्या के लिए छंटनी है।) _ –

+1

http://dev.mysql.com/doc/refman/5.0/en/mathematical- functions.html # function_floor? –

+0

हाँ, मैं केवल उत्सुक हो सकता हूं अगर इसे कॉन्फ़िगरेशन द्वारा किया जा सकता है, क्योंकि मुझे पूरे एप्लिकेशन में इस व्यवहार की आवश्यकता है। –

उत्तर

6

doc

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

है कि आपके ऑपरेटिंग सिस्टम के लिए ऐसा नहीं है, तो आप इस अपडेट करते समय संभाल कर सकते हैं साथ truncate

UPDATE my_table 
SET my_decimal_field = truncate(123.123456789, 5) 
WHERE id = 1 

SQLFiddle demo