DECIMAL(कुल_अंक, दशमलव_अंक) सिंटैक्स
MySQL में सटीक दशमलव मान संग्रहीत करने के लिए DECIMAL(p, s) डेटा प्रकार का उपयोग करें जहां:
- p (Precision): कुल अंक (दशमलव बिंदु के दोनों ओर)
- s (Scale): दशमलव बिंदु के दाएं अंक
उदाहरण: DECIMAL(4,2)
- कुल 4 अंक, 2 दशमलव के बाद
- अर्थ: 2 अंक दशमलव से पहले, 2 बाद में
- रेंज: -99.99 से 99.99 (साइन) या 0 से 99.99 (अनसाइन)
व्यावहारिक उदाहरण
1. टेबल बनाएं
mysql> CREATE TABLE DecimalDemo (
-> Amount DECIMAL(4,2)
-> );
Query OK, 0 rows affected (0.47 sec)
2. अमान्य मान (आउट ऑफ रेंज)
mysql> INSERT INTO DecimalDemo VALUES(123.4); -- 3 अंक दशमलव से पहले (अधिकतम 2)
ERROR 1264 (22003): Out of range value for column 'Amount' at row 1
mysql> INSERT INTO DecimalDemo VALUES(1234); -- कोई दशमलव नहीं, 4 अंक पूर्णांक
ERROR 1264 (22003): Out of range value for column 'Amount' at row 1
mysql> INSERT INTO DecimalDemo VALUES(1234.56); -- 4 अंक पूर्णांक + 2 दशमलव
ERROR 1264 (22003): Out of range value for column 'Amount' at row 1
3. वैध मान
mysql> INSERT INTO DecimalDemo VALUES(12.34); -- ठीक
mysql> INSERT INTO DecimalDemo VALUES(12.4); -- 12.40 बन जाता है
mysql> INSERT INTO DecimalDemo VALUES(.2345); -- 0.23 (चेतावनी: काटा गया)
mysql> INSERT INTO DecimalDemo VALUES(1.234); -- 1.23 (चेतावनी: काटा गया)
4. संग्रहीत डेटा
mysql> SELECT * FROM DecimalDemo;
+--------+
| Amount |
+--------+
| 12.34 |
| 12.40 |
| 0.23 |
| 1.23 |
+--------+
4 rows in set (0.00 sec)
महत्वपूर्ण नियम
- कुल अंक = पूर्णांक भाग + दशमलव भाग
- दशमलव भाग अतिरिक्त अंक काट देता है (चेतावनी के साथ)
- पूर्णांक भाग अतिरिक्त अंक → त्रुटि (आउट ऑफ रेंज)
DECIMAL(p,s)सटीक अंकगणित के लिए (फ्लोट/डबल के विपरीत)
आम वित्तीय उपयोग
| उपयोग | प्रकार | रेंज |
|---|---|---|
| मुद्रा (रुपये/डॉलर) | DECIMAL(10,2) | -99,999,999.99 से 99,999,999.99 |
| बड़ी मुद्रा | DECIMAL(15,2) | -999,999,999,999.99 से 999... |
| क्रिप्टो (8 दशमलव) | DECIMAL(20,8) | बड़ी रेंज, 8 दशमलव |
| प्रतिशत (4 दशमलव) | DECIMAL(5,4) | -9.9999 से 9.9999 |
FLOAT/DOUBLE vs DECIMAL
FLOAT/DOUBLE: अनुमानित, तेज, वैज्ञानिक गणनाDECIMAL: **सटीक**, धीमा, **वित्तीय/मौद्रिक डेटा के लिए अनिवार्य**