FLOOR() फंक्शन के साथ पूर्णांक डेसीमल मान खोजना
डेसीमल कॉलम में केवल वही रिकॉर्ड्स खोजें जो पूर्णांक हैं (जैसे 12.00, 35.00) FLOOR() फंक्शन का उपयोग करके।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Value DECIMAL(4,2)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (54.20); mysql> INSERT INTO DemoTable VALUES (55.0); mysql> INSERT INTO DemoTable VALUES (7.8); mysql> INSERT INTO DemoTable VALUES (9.0); mysql> INSERT INTO DemoTable VALUES (9.2);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+ | Value | +-------+ | 54.20 | | 55.00 | | 7.80 | | 9.00 | | 9.20 | +-------+
जहां डेसीमल एक पूर्णांक है (फ्रैक्शनल भाग शून्य है) ऐसे रिकॉर्ड्स खोजने के लिए क्वेरी:
mysql> SELECT * FROM DemoTable WHERE Value = FLOOR(Value);
आउटपुट:
+-------+ | Value | +-------+ | 55.00 | | 9.00 | +-------+
व्याख्या:
- FLOOR(Value): मान को नीचे की ओर निकटतम पूर्णांक तक राउंड करता है
- FLOOR(54.20) = 54
- FLOOR(55.00) = 55
- FLOOR(7.80) = 7
- FLOOR(9.00) = 9
- FLOOR(9.20) = 9
- Value = FLOOR(Value): केवल तब सत्य होता है जब मान का कोई फ्रैक्शनल भाग न हो
- 54.20 ≠ 54 (झूठा)
- 55.00 = 55 (सत्य) ✓
- 7.80 ≠ 7 (झूठा)
- 9.00 = 9 (सत्य) ✓
- 9.20 ≠ 9 (झूठा)
वैकल्पिक तरीके:
-- MOD का उपयोग करके SELECT * FROM DemoTable WHERE Value % 1 = 0; -- TRUNCATE का उपयोग करके SELECT * FROM DemoTable WHERE Value = TRUNCATE(Value, 0); -- CAST का उपयोग करके SELECT * FROM DemoTable WHERE Value = CAST(Value AS UNSIGNED);
नोट: फ्लोटिंग-पॉइंट कॉलम्स (FLOAT, DOUBLE) के लिए परिशुद्धता समस्याओं के कारण यह तरीका अविश्वसनीय हो सकता है। DECIMAL के लिए यह ठीक काम करता है।