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

MySQL में "price" कॉलम के लिए सबसे उपयुक्त डेटा प्रकार कौन सा है?


कीमत (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 नहीं।


  1. - विशिष्ट कॉलम मानों के लिए एकल MySQL क्वेरी में एकाधिक काउंट प्राप्त करें

    इसके लिए, आप विशिष्ट कॉलम के लिए पैरामीटर मान के साथ एग्रीगेट फंक्शन SUM() का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1790 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows affected (0.94 sec) इन्सर्ट कमा

  1. - MySQL में एक क्वेरी में सभी कॉलम नामों के लिए उपनाम (alias) कैसे सेट करें

    सिंटैक्स SELECT yourColumnName1 AS aliasName1, yourColumnName2 AS aliasName2 FROM yourTableName AS tableAlias; उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2014 VALUES (Chris, Brown); उपनाम के साथ क्वेरी FROM DemoTable2014 tbl; परिणाम +------------------+-----------------+ | Studen

  1. - MySQL में खोज क्वेरी के लिए उपयुक्त डेटाबेस फ़ील्ड टाइप

    REGEXP_INSTR() फ़ंक्शन (MySQL 8.0+) स्ट्रिंग में उपस्ट्रिंग की स्थिति लौटाता है; 0 = नहीं मिला। select * from yourTableName where REGEXP_INSTR(yourColumnName, yourSearchValue); उदाहरण insert into demo64(name) values(John Smith), (John Doe), (Chris Brown), (David Miller), (Carol Taylor); John खोज