परिचय
कभी-कभी डेटा में वर्गाकार कोष्ठक [...] के अंदर अवांछित टेक्स्ट होता है जिसे हटाने की आवश्यकता होती है। MySQL में स्ट्रिंग फंक्शन्स का उपयोग करके इसे प्राप्त किया जा सकता है।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Name TEXT
-> );
Query OK, 0 rows affected (0.47 sec)
mysql> INSERT INTO DemoTable VALUES('John [John] Smith');
Query OK, 1 row affected (0.30 sec)
mysql> INSERT INTO DemoTable VALUES('[Carol] Carol Taylor');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('David [Miller] Miller');
Query OK, 1 row affected (0.14 sec)
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------------------+
| Name |
+-----------------------+
| John [John] Smith |
| [Carol] Carol Taylor |
| David [Miller] Miller |
+-----------------------+
3 rows in set (0.00 sec)
वर्गाकार कोष्ठक के बीच का टेक्स्ट हटाने की क्वेरी
mysql> SELECT REPLACE(
-> Name,
-> SUBSTRING(
-> Name,
-> LOCATE('[', Name),
-> LENGTH(Name) - LOCATE(']', REVERSE(Name)) - LOCATE('[', Name) + 2
-> ),
-> ''
-> ) AS Name
-> FROM DemoTable;
परिणाम
+---------------+
| Name |
+---------------+
| John Smith |
| Carol Taylor |
| David Miller |
+---------------+
3 rows in set (0.03 sec)
क्वेरी का विश्लेषण
LOCATE('[', Name)- शुरुआती कोष्ठक की स्थिति खोजता हैLOCATE(']', REVERSE(Name))- अंतिम कोष्ठक की स्थिति खोजता है (स्ट्रिंग को उलट कर)SUBSTRING(...)- कोष्ठक सहित बीच का भाग निकालता हैREPLACE(..., '')- उस भाग को खाली स्ट्रिंग से बदल देता है
नोट
यह क्वेरी मानती है कि प्रत्येक मान में केवल एक जोड़ी कोष्ठक है। जटिल मामलों के लिए (नेस्टेड कोष्ठक, एकाधिक जोड़े) अधिक उन्नत पार्सिंग या एप्लिकेशन-लेवल प्रोसेसिंग की आवश्यकता हो सकती है।