REPLACE() फंक्शन से % हटाना
स्ट्रिंग कॉलम से प्रतिशत चिह्न (%) हटाने के लिए REPLACE(str, '%', '') का उपयोग करें। यह सभी घटनाओं को खाली स्ट्रिंग से बदल देता है।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable828(
CustomerName VARCHAR(100),
InterestRate VARCHAR(100)
);
Query OK, 0 rows affected (0.50 sec)
रिकॉर्ड्स इन्सर्ट करना (% के साथ)
mysql> INSERT INTO DemoTable828 VALUES
('Chris','10%'),('Robert','11.5%'),('David','15.90%'),('Bob','20%');
Query OK, 4 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable828;
+--------------+--------------+ | CustomerName | InterestRate | +--------------+--------------+ | Chris | 10% | | Robert | 11.5% | | David | 15.90% | | Bob | 20% | +--------------+--------------+ 4 rows in set (0.00 sec)
प्रतिशत चिह्न हटाने की क्वेरी (UPDATE)
mysql> UPDATE DemoTable828 SET InterestRate = REPLACE(InterestRate, '%', ''); Query OK, 4 rows affected (0.18 sec) Rows matched: 4 Changed: 4 Warnings: 0
अपडेट के बाद डेटा देखना
mysql> SELECT * FROM DemoTable828;
+--------------+--------------+ | CustomerName | InterestRate | +--------------+--------------+ | Chris | 10 | | Robert | 11.5 | | David | 15.90 | | Bob | 20 | +--------------+--------------+ 4 rows in set (0.00 sec)
SELECT में हटाना (डेटा बदले बिना)
SELECT CustomerName, REPLACE(InterestRate, '%', '') AS CleanRate FROM DemoTable828;
संख्यात्मक प्रकार में बदलना (गणना के लिए)
SELECT CustomerName, CAST(REPLACE(InterestRate, '%', '') AS DECIMAL(5,2)) AS RateValue FROM DemoTable828;
परिणाम
+--------------+-----------+ | CustomerName | RateValue | +--------------+-----------+ | Chris | 10.00 | | Robert | 11.50 | | David | 15.90 | | Bob | 20.00 | +--------------+-----------+
अन्य अवांछित वर्ण हटाना
| वर्ण | REPLACE कॉल |
|---|---|
| कॉमा (,) | REPLACE(col, ',', '') |
| डॉलर ($) | REPLACE(col, '$', '') |
| स्पेस | REPLACE(col, ' ', '') |
| कई वर्ण | REPLACE(REPLACE(REPLACE(col, '$', ''), ',', ''), '%', '') |
REGEXP_REPLACE (MySQL 8.0+) - अधिक शक्तिशाली
-- सभी गैर-संख्यात्मक वर्ण हटाएं (दशमलव बिंदु रखें) SELECT REGEXP_REPLACE(InterestRate, '[^0-9.]', '') FROM DemoTable828; -- केवल अंतिम % हटाएं SELECT REGEXP_REPLACE(InterestRate, '%$', '') FROM DemoTable828;
TRIM() से तुलना
TRIM()- केवल शुरुआत/अंत से वर्ण हटाता हैREPLACE()- सभी घटनाएं हटाता हैTRIM(TRAILING '%' FROM InterestRate)- केवल अंतिम % हटाता है
स्थायी सफाई: कॉलम प्रकार बदलें
-- 1. साफ करें UPDATE DemoTable828 SET InterestRate = REPLACE(InterestRate, '%', ''); -- 2. DECIMAL में बदलें ALTER TABLE DemoTable828 MODIFY InterestRate DECIMAL(5,2);
नोट
प्रतिशत मानों को संख्यात्मक कॉलम (DECIMAL) में स्टोर करना बेहतर है, फॉर्मेटिंग एप्लिकेशन लेयर पर करें।