CAST() से इंटीजर डिवीजन को डेसीमल डिवीजन में बदलना
MySQL में दो इंटीजर कॉलम का डिवीजन करने पर इंटीजर डिवीजन होता है (ट्रंकेटेड)। सटीक डेसीमल परिणाम के लिए एक ऑपरेंड को CAST() से DECIMAL में बदलें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable1352 (
Value1 INT,
Value2 INT
);
INSERT INTO DemoTable1352 VALUES(10, 30);
INSERT INTO DemoTable1352 VALUES(40, 60);
INSERT INTO DemoTable1352 VALUES(110, 130);
मौजूदा डेटा
+--------+--------+ | Value1 | Value2 | +--------+--------+ | 10 | 30 | | 40 | 60 | | 110 | 130 | +--------+--------+
बिना CAST (इंटीजर डिवीजन)
SELECT Value1 / Value2 FROM DemoTable1352;
+-----------------+ | Value1 / Value2 | +-----------------+ | 0 | | 0 | | 0 | +-----------------+
क्वेरी: CAST करके सटीक डिवीजन
SELECT CAST(Value1 AS DECIMAL(18,14)) / Value2 FROM DemoTable1352;
आउटपुट
+-----------------------------------------+ | cast(Value1 as DECIMAL(18,14)) / Value2 | +-----------------------------------------+ | 0.333333333333333333 | | 0.666666666666666666 | | 0.846153846153846153 | +-----------------------------------------+
DECIMAL(18,14) का अर्थ
18= कुल डिजिट्स (प्रिसिजन)14= डेसीमल के बाद डिजिट्स (स्केल)- जरूरत के अनुसार एडजस्ट करें:
DECIMAL(10,2)= 2 डेसीमल प्लेस
अन्य तरीके
-- 1.0 से गुणा करके (इम्प्लिसिट कन्वर्जन) SELECT Value1 * 1.0 / Value2 FROM DemoTable1352; -- CAST के अन्य सिंटैक्स SELECT CONVERT(Value1, DECIMAL(10,4)) / Value2 FROM DemoTable1352; -- दोनों कास्ट SELECT CAST(Value1 AS DECIMAL(10,4)) / CAST(Value2 AS DECIMAL(10,4)) FROM DemoTable1352;
राउंडिंग के लिए
SELECT ROUND(CAST(Value1 AS DECIMAL(10,4)) / Value2, 2) AS Ratio FROM DemoTable1352;
+--------+ | Ratio | +--------+ | 0.33 | | 0.67 | | 0.85 | +--------+
ZERO डिवीजन हैंडलिंग
SELECT CASE
WHEN Value2 = 0 THEN NULL
ELSE CAST(Value1 AS DECIMAL(10,4)) / Value2
END AS Ratio FROM DemoTable1352;