MySQL में जब किसी कॉलम में कॉमा-सेपरेटेड मान (CSV) स्टोर होते हैं, तो उनमें किसी विशिष्ट मान को खोजने के लिए REGEXP (रेगुलर एक्सप्रेशन) का उपयोग करना सबसे प्रभावी तरीका है। यह सटीक मिलान सुनिश्चित करता है और आंशिक मिलान से बचाता है।
उदाहरण: REGEXP के साथ CSV खोज
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1902 (
Subjects TEXT
);
कॉमा-सेपरेटेड डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1902 VALUES
('MongoDB,Java,Python'),
('SQL Server,MySQL,PL/SQL'),
('Hibernate,Spring,JPA');
'MySQL' शब्द वाले रिकॉर्ड खोजें:
mysql> SELECT * FROM DemoTable1902 WHERE Subjects REGEXP '(^|.*,)MySQL(,.*|$)';
आउटपुट:
+-------------------------+ | Subjects | +-------------------------+ | SQL Server,MySQL,PL/SQL | +-------------------------+
रेगुलर एक्सप्रेशन समझाया
'(^|.*,)MySQL(,.*|$)' पैटर्न का अर्थ:
(^|.*,)- स्ट्रिंग की शुरुआत या कॉमा के बाद कोई भी वर्णMySQL- खोजा जाने वाला सटीक शब्द(,.*|$)- कॉमा और कोई भी वर्ण या स्ट्रिंग का अंत
यह सुनिश्चित करता है कि 'MySQL' एक पूर्ण टोकन के रूप में मिले, न कि 'MySQLite' या 'NoMySQL' के हिस्से के रूप में।
बेहतर विकल्प: JSON या नॉर्मलाइज़्ड टेबल
उत्पादन वातावरण में, CSV स्टोर करने के बजाय:
- JSON कॉलम (MySQL 5.7+) उपयोग करें:
JSON_CONTAINS()फंक्शन के साथ - अलग टेबल बनाएं (नॉर्मलाइज़ेशन): एक-से-अनेक रिलेशनशिप के साथ
- FIND_IN_SET() फंक्शन: सरल मामलों के लिए, लेकिन यह इंडेक्स का उपयोग नहीं करता
बड़े डेटासेट के लिए, नॉर्मलाइज़्ड स्कीमा या JSON कॉलम बेहतर परफॉरमेंस और रखरखाव प्रदान करते हैं।