कीमत (price) संग्रहीत करने के लिए DECIMAL डेटा प्रकार सबसे उपयुक्त है क्योंकि यह मान को सटीकता से संग्रहीत करता है बिना राउंडिंग त्रुटि के।
क्यों DECIMAL?
- सटीक संग्रहण: फ्लोटिंग-पॉइंट (FLOAT/DOUBLE) की तरह राउंडिंग त्रुटि नहीं
- वित्तीय डेटा के लिए आवश्यक: पैसों की गणना में सटीकता महत्वपूर्ण
- नियंत्रित परिशुद्धता: दशमलव स्थान और कुल अंक निर्दिष्ट कर सकते हैं
सिंटैक्स
DECIMAL(कुल_अंक, दशमलव_स्थान)
उदाहरण: DECIMAL(10,2)
- कुल 10 अंक (दशमलव बिंदु सहित नहीं)
- दशमलव बिंदु के बाद 2 अंक
- रेंज: -99,999,999.99 से 99,999,999.99
टेबल बनाना
mysql> create table PriceDemo ( -> ProductPrice DECIMAL(10,2) -> ); Query OK, 0 rows affected (0.60 sec)
कीमतें डालना
mysql> insert into PriceDemo values(12345.67); mysql> insert into PriceDemo values(99999999.67); mysql> insert into PriceDemo values(123456.67); mysql> insert into PriceDemo values(4444444.50);
परिणाम
mysql> select *from PriceDemo;
+--------------+ | ProductPrice | +--------------+ | 12345.67 | | 99999999.67 | | 123456.67 | | 4444444.50 | +--------------+
FLOAT/DOUBLE क्यों नहीं?
-- FLOAT के साथ समस्या CREATE TABLE test_float (price FLOAT); INSERT INTO test_float VALUES (123.45); SELECT price FROM test_float; -- 123.45000076293945 जैसे परिणाम दे सकता है -- DECIMAL सटीक रहता है CREATE TABLE test_decimal (price DECIMAL(10,2)); INSERT INTO test_decimal VALUES (123.45); SELECT price FROM test_decimal; -- 123.45 (सटीक)
सामान्य कीमत सीमाओं के लिए सिफारिशें
| उपयोग मामला | प्रकार | अधिकतम मान |
|---|---|---|
| सामान्य उत्पाद कीमत | DECIMAL(10,2) | 99,999,999.99 |
| बड़ी मुद्रा राशि | DECIMAL(15,2) | 999,999,999,999.99 |
| क्रिप्टोकरेंसी (अधिक दशमलव) | DECIMAL(20,8) | 999,999,999,999.99999999 |
| बहुत बड़ी राशि | DECIMAL(19,4) | 9,999,999,999,999,999.9999 |
निष्कर्ष: हमेशा कीमत के लिए DECIMAL उपयोग करें, कभी FLOAT या DOUBLE नहीं।