MySQL में स्ट्रिंग (VARCHAR) कॉलम को संख्यात्मक प्रकार (DOUBLE, DECIMAL) में परिवर्तित करने के लिए अंकगणितीय संक्रिया (जैसे + 0.0) या CAST()/CONVERT() फ़ंक्शन्स का उपयोग करें।
सरल तरीका: अंकगणितीय संक्रिया
SELECT string_column + 0.0 AS numeric_column FROM table_name;
व्यावहारिक उदाहरण
1. टेबल बनाएं और स्ट्रिंग डेटा डालें
mysql> CREATE TABLE DemoTable731 (Value VARCHAR(100));
Query OK, 0 rows affected (0.50 sec)
mysql> INSERT INTO DemoTable731 VALUES ('4.50'), ('7.83'), ('8.91'), ('560.34');
Query OK, 4 rows affected (0.20 sec)
2. मूल डेटा (स्ट्रिंग)
mysql> SELECT * FROM DemoTable731; +--------+ | Value | +--------+ | 4.50 | | 7.83 | | 8.91 | | 560.34 | +--------+ 4 rows in set (0.00 sec)
3. + 0.0 के साथ परिवर्तित करें
mysql> SELECT Value + 0.0 AS demo FROM DemoTable731; +-----------+ | demo | +-----------+ | 4.5 | | 7.83 | | 8.91 | | 560.34 | +-----------+ 4 rows in set (0.28 sec)
अन्य परिवर्तन विधियाँ
CAST() फ़ंक्शन (मानक SQL)
SELECT CAST(Value AS DECIMAL(10,2)) FROM DemoTable731; SELECT CAST(Value AS DOUBLE) FROM DemoTable731;
CONVERT() फ़ंक्शन
SELECT CONVERT(Value, DECIMAL(10,2)) FROM DemoTable731;
तुलना
| विधि | सिंटैक्स | वापसी प्रकार | नोट्स |
|---|---|---|---|
+ 0.0 | col + 0.0 | DOUBLE | सबसे छोटा, तेज़ |
CAST() | CAST(col AS DECIMAL(10,2)) | निर्दिष्ट प्रकार | मानक SQL, सटीकता नियंत्रण |
CONVERT() | CONVERT(col, DECIMAL(10,2)) | निर्दिष्ट प्रकार | ODBC सिंटैक्स भी समर्थित |
व्यावहारिक उपयोग: कॉलम प्रकार स्थायी रूप से बदलें
-- 1. नया संख्यात्मक कॉलम जोड़ें ALTER TABLE DemoTable731 ADD ValueNum DECIMAL(10,2); -- 2. परिवर्तित करके भरें UPDATE DemoTable731 SET ValueNum = Value + 0.0; -- 3. सत्यापित करें SELECT Value, ValueNum FROM DemoTable731; -- 4. पुराना कॉलम हटाएं, नए का नाम बदलें ALTER TABLE DemoTable731 DROP COLUMN Value; ALTER TABLE DemoTable731 CHANGE ValueNum Value DECIMAL(10,2);
अमान्य डेटा संभालना
-- गैर-संख्यात्मक स्ट्रिंग्स के लिए सुरक्षित परिवर्तन
SELECT CASE
WHEN Value REGEXP '^[0-9]+(\.[0-9]+)?$' THEN CAST(Value AS DECIMAL(10,2))
ELSE NULL
END AS safe_number FROM DemoTable731;
DECIMAL vs DOUBLE
- DECIMAL(10,2) - सटीक निश्चित-बिंदु, वित्तीय डेटा के लिए
- DOUBLE - फ्लोटिंग-पॉइंट, वैज्ञानिक गणना के लिए
- पैसे के लिए हमेशा
DECIMALउपयोग करें