Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में दशमलव फील्ड को राउंड होने से कैसे रोकें - DECIMAL सटीकता सेट करना

समस्या: डिफ़ॉल्ट DECIMAL राउंडिंग

जब DECIMAL कॉलम को स्केल (दशमलव स्थान) के बिना परिभाषित किया जाता है, तो MySQL पूर्णांक की तरह व्यवहार करता है और मानों को राउंड कर देता है।

समाधान: DECIMAL(precision, scale) निर्दिष्ट करें

DECIMAL(कुल_अंक, दशमलव_स्थान) में दोनों पैरामीटर निर्दिष्ट करें।

गलत: DECIMAL(7) - कोई स्केल नहीं

mysql> CREATE TABLE stopRoundingDemo (Amount DECIMAL(7));

mysql> INSERT INTO stopRoundingDemo VALUES (7836.783), (1737.67), (110.50);
-- चेतावनी: Data truncated for column 'Amount'

mysql> SELECT * FROM stopRoundingDemo;
+--------+
| Amount |
+--------+
| 7837   |
| 1738   |
| 111    |
+--------+

मान राउंड हो गए!

सही: DECIMAL(10,4) - 4 दशमलव स्थान

mysql> CREATE TABLE stopRoundingDemo2 (Amount DECIMAL(10,4));

mysql> INSERT INTO stopRoundingDemo2 VALUES (7836.783), (1737.67), (110.50);
-- कोई चेतावनी नहीं

mysql> SELECT * FROM stopRoundingDemo2;
+-----------+
| Amount    |
+-----------+
| 7836.7830 |
| 1737.6700 |
| 110.5000  |
+-----------+

DECIMAL पैरामीटर समझाया

सिंटैक्सअर्थउदाहरण
DECIMAL(5,2)कुल 5 अंक, 2 दशमलव999.99 तक
DECIMAL(10,4)कुल 10 अंक, 4 दशमलव999999.9999 तक
DECIMAL(19,4)मुद्रा के लिए सामान्य999 ट्रिलियन तक
DECIMAL(65,30)अधिकतम MySQL सीमाअत्यधिक सटीक

महत्वपूर्ण नियम

  • Precision (M): कुल अंकों की संख्या (1-65)
  • Scale (D): दशमलव बिंदु के बाद के अंक (0-30, ≤ M)
  • D = 0 या छोड़ा गया = पूर्णांक (राउंड होता है)
  • भंडारण: लगभग M/2 बाइट्स

सर्वोत्तम अभ्यास

  • मुद्रा/वित्तीय डेटा के लिए: DECIMAL(19,4) या DECIMAL(10,2)
  • वैज्ञानिक माप के लिए: आवश्यक सटीकता के अनुसार
  • कभी भी FLOAT/DOUBLE का उपयोग सटीक मानों के लिए न करें
  • एप्लिकेशन स्तर पर भी सत्यापन करें

मौजूदा कॉलम ठीक करना

ALTER TABLE yourTable 
MODIFY COLUMN Amount DECIMAL(10,4);

नोट: डेटा पहले से राउंड हो चुका है तो खोया नहीं जा सकता।

  1. - MySQL में ORDER BY FIELD को GROUP BY के साथ एकल क्वेरी में कैसे उपयोग करें

    इसके लिए, आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable ( Message text ); Query OK, 0 rows affected (1.15 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Good); Query OK, 1 row affected (0.43 sec) mysql> insert into Demo

  1. - MySQL में फ़ील्ड मान से कॉमा की गिनती करना

    LENGTH और REPLACE से वर्ण गिनती किसी वर्ण (जैसे कॉमा) की घटनाएँ गिनने के लिए: कुल लंबाई - उस वर्ण को हटाने के बाद की लंबाई। सिंटैक्स SELECT LENGTH(col) - LENGTH(REPLACE(col, ,, )) AS comma_count FROM table; तालिका और डेटा INSERT INTO DemoTable1510 VALUES(20,35), (45,67,89), (90,97,101,190); कॉ

  1. - MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल से एक कॉलम का मान दूसरे कॉलम से प्राप्त करें

    MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल (@var) का उपयोग करके पिछली पंक्ति के मान के आधार पर वर्तमान पंक्ति के लिए चल योग (क्यूमुलेटिव सम) या अन्य व्युत्पन्न मान की गणना कर सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1868 (Value INT); डेटा डालें mysql> INSERT INTO DemoTable1868 VALUES(10), (2