MySQL में किसी कॉलम को एकाधिक पैटर्न/शब्दों के विरुद्ध फ़िल्टर करने के लिए, RLIKE (या REGEXP) ऑपरेटर का उपयोग करें जो रेगुलर एक्सप्रेशन ऑल्टरनेशन (|) सपोर्ट करता है। यह एकाधिक LIKE शर्तों से अधिक संक्षिप्त और लचीला है।
उदाहरण: 'SQL' या 'Python' वाले विषय खोजना
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1935 (Subject VARCHAR(20));
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1935 VALUES
('MySQL'), ('Python'), ('MongoDB'), ('SQL Server'), ('PL SQL');
RLIKE के साथ फ़िल्टर करें:
mysql> SELECT * FROM DemoTable1935 WHERE Subject RLIKE 'SQL|Python';
आउटपुट:
+------------+ | Subject | +------------+ | MySQL | | Python | | SQL Server | | PL SQL | +------------+
RLIKE / REGEXP पैटर्न व्याख्या
'SQL|Python': 'SQL' या 'Python' से मिलान (OR लॉजिक)- केस-इनसेंसिटिव: डिफ़ॉल्ट कॉलेशन में
- आंशिक मिलान: 'MySQL' में 'SQL' मिलता है, 'PL SQL' में 'SQL' मिलता है
सटीक शब्द मिलान के लिए
-- शब्द सीमा के साथ (MySQL 8.0+) WHERE Subject RLIKE '[[:<:]]SQL[[:>:]]|[[:<:]]Python[[:>:]]' -- या स्पेस/सीमा के साथ WHERE Subject RLIKE '(^| )SQL( |$)|(^| )Python( |$)';
LIKE के साथ तुलना
-- एकाधिक LIKE (verbose) WHERE Subject LIKE '%SQL%' OR Subject LIKE '%Python%' -- RLIKE (संक्षिप्त) WHERE Subject RLIKE 'SQL|Python'
उन्नत पैटर्न
-- कोई भी प्रोग्रामिंग भाषा WHERE Subject RLIKE 'Java|Python|PHP|Ruby|Go|Rust' -- प्रारंभ में शब्द WHERE Subject RLIKE '^(MySQL|PostgreSQL|Oracle)' -- अंत में शब्द WHERE Subject RLIKE '(Database|DB|Server)$'
प्रदर्शन नोट
RLIKEइंडेक्स का उपयोग नहीं कर सकता (फुल टेबल स्कैन)- बड़े टेबल्स के लिए, फुलटेक्स्ट इंडेक्स (
MATCH() AGAINST()) उपयोग करें - छोटे-मध्यम टेबल्स के लिए RLIKE स्वीकार्य है
फुलटेक्स्ट विकल्प (बड़े टेक्स्ट के लिए)
ALTER TABLE DemoTable1935 ADD FULLTEXT(Subject);
SELECT * FROM DemoTable1935
WHERE MATCH(Subject) AGAINST('+SQL +Python' IN BOOLEAN MODE);
RLIKE पैटर्न मिलान के लिए शक्तिशाली है; सही टूल चुनें डेटा आकार और आवश्यकता के आधार पर।