REPLACE() फंक्शन के साथ टेक्स्ट से नंबर निकालना
टेक्स्ट फील्ड से नॉन-न्यूमेरिक कैरेक्टर्स को हटाकर केवल नंबर प्राप्त करने के लिए नेस्टेड REPLACE() फंक्शन्स का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Number TEXT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('7364746464,-');
mysql> INSERT INTO DemoTable VALUES ('-,8909094556');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+--------------+ | Number | +--------------+ | 7364746464,- | | -,8909094556 | +--------------+
टेक्स्ट फील्ड से नंबर निकालने के लिए क्वेरी (हाइफ़न, स्पेस, कोट्स, कॉमा हटाएं):
mysql> SELECT REPLACE(REPLACE(REPLACE(REPLACE(Number, '-', ''), ' ', ''), '"', ''), ',', '') AS Result
FROM DemoTable;
आउटपुट:
+------------+ | Result | +------------+ | 7364746464 | | 8909094556 | +------------+
व्याख्या:
- आंतरिक से बाहरी क्रम में REPLACE लागू होते हैं:
REPLACE(Number, '-', '')- हाइफ़न हटाता हैREPLACE(..., ' ', '')- स्पेस हटाता हैREPLACE(..., '"', '')- डबल कोट्स हटाता हैREPLACE(..., ',', '')- कॉमा हटाता है
- परिणाम केवल अंक बचते हैं
बेहतर तरीका (MySQL 8.0+): REGEXP_REPLACE का उपयोग करें (यदि उपलब्ध हो):
SELECT REGEXP_REPLACE(Number, '[^0-9]', '') AS Result FROM DemoTable;
पुराने MySQL संस्करणों के लिए: एक स्टोर्ड फंक्शन बनाएं जो सभी नॉन-डिजिट कैरेक्टर्स को हटा दे।
नोट: यह तरीका केवल ज्ञात अवांछित कैरेक्टर्स के लिए काम करता है। अज्ञात कैरेक्टर्स के लिए रेगुलर एक्सप्रेशन बेहतर है।