Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में LIKE के साथ एकाधिक शब्दों से रिकॉर्ड कैसे फ़िल्टर करें?

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 पैटर्न मिलान के लिए शक्तिशाली है; सही टूल चुनें डेटा आकार और आवश्यकता के आधार पर।

  1. - MySQL में अलग कॉलम वाली टेबल में रिकॉर्ड कैसे कॉपी करें?

    MySQL में एक टेबल से दूसरी टेबल में डेटा कॉपी करने के लिए, जब कॉलम नाम या संरचना अलग हो, तो INSERT INTO ... SELECT स्टेटमेंट का उपयोग करें। यह कॉलम मैपिंग को स्पष्ट रूप से परिभाषित करने की अनुमति देता है। उदाहरण: अलग कॉलम नामों के साथ डेटा कॉपी स्रोत टेबल बनाएं (ऑटो-इन्क्रीमेंट प्राइमरी की के साथ)

  1. - MySQL में IN() क्लॉज़ के साथ एक क्वेरी में रिकॉर्ड कैसे डिलीट करें?

    MySQL में एक ही क्वेरी में एकाधिक विशिष्ट रिकॉर्ड डिलीट करने के लिए, DELETE स्टेटमेंट के साथ IN() ऑपरेटर का उपयोग करें। यह एकाधिक DELETE स्टेटमेंट चलाने से अधिक कुशल और पठनीय है। उदाहरण: विशिष्ट StudentId वाले रिकॉर्ड डिलीट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1922 ( StudentI

  1. - MySQL में स्टोर्ड प्रोसीजर से टेबल रिकॉर्ड कैसे प्रदर्शित करें?

    MySQL में स्टोर्ड प्रोसीजर के अंदर SELECT स्टेटमेंट रखकर टेबल रिकॉर्ड्स प्रदर्शित कर सकते हैं। यह एनकैप्सुलेशन, पुन: उपयोग, और सुरक्षा (टेबल पर सीधे SELECT अधिकार दिए बिना डेटा एक्सेस) के लिए उपयोगी है। उदाहरण: सभी रिकॉर्ड प्रदर्शित करने वाला प्रोसीजर डेमो टेबल बनाएं: mysql> CREATE TABLE DemoT