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

MySQL में फ्लोट मान को दो कॉलम में कैसे विभाजित करें?

MySQL में दशमलव संख्या (फ्लोट/स्ट्रिंग) को दशमलव बिंदु से पहले और बाद के भाग में विभाजित करने के लिए, SUBSTRING_INDEX() के साथ CAST() का उपयोग करें। यह वित्तीय डेटा, माप, और निर्देशांक प्रोसेसिंग के लिए उपयोगी है।

उदाहरण: '100.50' → 100 और 50

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1951 (Value1 VARCHAR(20));

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1951 VALUES
('100.50'), ('70.90'), ('1000.55');

क्वेरी:

mysql> SELECT 
    CAST(SUBSTRING_INDEX(Value1, '.', 1) AS UNSIGNED) AS FirstValue,
    CAST(SUBSTRING_INDEX(Value1, '.', -1) AS UNSIGNED) AS SecondValue
FROM DemoTable1951;

आउटपुट:

+------------+-------------+
| FirstValue | SecondValue |
+------------+-------------+
| 100        | 50          |
| 70         | 90          |
| 1000       | 55          |
+------------+-------------+

फंक्शन व्याख्या

SUBSTRING_INDEX(str, delim, count)

  • count > 0: डेलिमीटर के countवें घटना से पहले का सबस्ट्रिंग
  • count < 0: डेलिमीटर के |count|वें घटना के बाद का सबस्ट्रिंग
  • SUBSTRING_INDEX('100.50', '.', 1) → '100' (पहले '.' से पहले)
  • SUBSTRING_INDEX('100.50', '.', -1) → '50' (अंतिम '.' के बाद)

CAST(... AS UNSIGNED)

  • स्ट्रिंग को अनसाइन्ड इंटीजर में बदलता है
  • अग्रणी शून्य हटाता है ('050' → 50)
  • अमान्य संख्या के लिए 0 लौटाता है

दशमलव परिशुद्धता बनाए रखने के लिए

-- स्ट्रिंग के रूप में रखें (अग्रणी शून्य संरक्षित)
SELECT 
    SUBSTRING_INDEX(Value1, '.', 1) AS integer_part,
    SUBSTRING_INDEX(Value1, '.', -1) AS decimal_part
FROM DemoTable1951;

-- DECIMAL में कास्ट करें
SELECT 
    CAST(SUBSTRING_INDEX(Value1, '.', 1) AS DECIMAL(10,0)) AS int_part,
    CAST(SUBSTRING_INDEX(Value1, '.', -1) AS DECIMAL(10,0)) AS dec_part

ऋणात्मक संख्या संभालना

-- '-100.50' के लिए
SELECT 
    CAST(SUBSTRING_INDEX(Value1, '.', 1) AS SIGNED) AS int_part,  -- -100
    CAST(SUBSTRING_INDEX(Value1, '.', -1) AS UNSIGNED) AS dec_part  -- 50

वैकल्पिक: FLOOR और MOD (संख्यात्मक कॉलम के लिए)

-- यदि कॉलम DECIMAL/FLOAT है
SELECT 
    FLOOR(value) AS int_part,
    ROUND((value - FLOOR(value)) * 100) AS dec_part  -- 2 दशमलव मानकर
FROM table;

सावधानियां

  • दशमलव बिंदु नहीं: SUBSTRING_INDEX पूरी स्ट्रिंग लौटाता है (दूसरा भाग खाली/NULL)
  • एकाधिक दशमलव: '1.2.3' → पहला भाग '1', दूसरा '2.3'
  • वैज्ञानिक संकेतन: '1.5E2' सही नहीं पार्स होगा
  • संस्कृति: कुछ लोकेल में कॉमा (,) दशमलव सेपरेटर है

बेहतर डिज़ाइन

दो अलग कॉलम में स्टोर करें: amount_int INT, amount_dec SMALLINT या DECIMAL(10,2) सिंगल कॉलम में।

  1. - MySQL में दो कॉलम में से उच्चतम मान द्वारा कैसे क्रमबद्ध करें?

    MySQL में GREATEST() से दो कॉलम के उच्चतम मान द्वारा क्रमबद्ध करना दो कॉलम में से बड़े मान के आधार पर पंक्तियाँ क्रमबद्ध करने के लिए GREATEST() फ़ंक्शन का उपयोग करें। टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable834 ( Value1 INT, Value2 INT ); Query OK, 0 rows affected (1.50 sec)

  1. - MySQL टेबल में डुप्लीकेट मान रोकने के लिए UNIQUE कंस्ट्रेंट का उपयोग

    UNIQUE कंस्ट्रेंट से डुप्लीकेट एंट्री रोकना MySQL में किसी कॉलम या कॉलम्स के कॉम्बिनेशन पर यूनिक वैल्यू लागू करने के लिए UNIQUE कंस्ट्रेंट का उपयोग किया जाता है। टेबल बनाना UNIQUE कंस्ट्रेंट के साथ CREATE TABLE DemoTable832( FirstName VARCHAR(100), LastName VARCHAR(100), UNIQUE(FirstNam

  1. - MySQL में एकल क्वेरी से टेबल के सभी कॉलम को विशिष्ट मान पर सेट करें

    MySQL में UPDATE स्टेटमेंट का उपयोग करके एक ही क्वेरी में किसी टेबल के एक या अधिक कॉलम को विशिष्ट मानों पर सेट किया जा सकता है। यह तब उपयोगी होता है जब किसी विशिष्ट पंक्ति (या पंक्तियों) के सभी फ़ील्ड को एक साथ अपडेट करना हो। सिंटैक्स UPDATE table_name SET column1 = value1, column2 = value2, colum