LIKE ऑपरेटर से खोज प्रणाली
LIKE ऑपरेटर वाइल्डकार्ड (%, _) के साथ पैटर्न मिलान करने के लिए उपयोग किया जाता है, जिससे सरल खोज प्रणाली बनाई जा सकती है।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable812(Comments TEXT); Query OK, 0 rows affected (0.61 sec)
रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable812 VALUES
('Good Looking'),('Awesome'),('Looking Gorgeous'),('Good Luck'),('Have a nice day');
Query OK, 5 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable812;
+------------------+ | Comments | +------------------+ | Good Looking | | Awesome | | Looking Gorgeous | | Good Luck | | Have a nice day | +------------------+ 5 rows in set (0.00 sec)
कीवर्ड 'Look' से खोज क्वेरी
mysql> SELECT * FROM DemoTable812 WHERE Comments LIKE '%Look%';
परिणाम
+------------------+ | Comments | +------------------+ | Good Looking | | Looking Gorgeous | +------------------+ 2 rows in set (0.00 sec)
खोज पैटर्न के प्रकार
| पैटर्न | व्यवहार | उदाहरण मिलान |
|---|---|---|
'%keyword%' | कहीं भी कीवर्ड हो (सबस्ट्रिंग खोज) | 'Look', 'Looking', 'Outlook' |
'keyword%' | कीवर्ड से शुरू हो | 'Looking', 'Looker' |
'%keyword' | कीवर्ड पर समाप्त हो | 'Outlook', 'Overlook' |
'_keyword' | एक वर्ण के बाद कीवर्ड | 'FLook', 'BLook' |
केस सेंसिटिविटी
- डिफ़ॉल्ट: केस-इनसेंसिटिव (कोलेशन पर निर्भर)
- केस-सेंसिटिव खोज:
WHERE Comments LIKE BINARY '%Look%' - केस-इनसेंसिटिव बाध्य:
WHERE LOWER(Comments) LIKE '%look%'
व्यावहारिक खोज प्रणाली पैटर्न
1. बहु-कीवर्ड खोज (OR)
SELECT * FROM DemoTable812 WHERE Comments LIKE '%Good%' OR Comments LIKE '%Great%';
2. बहु-कीवर्ड खोज (AND - सभी कीवर्ड मौजूद हों)
SELECT * FROM DemoTable812 WHERE Comments LIKE '%Good%' AND Comments LIKE '%Look%';
3. डायनामिक पैरामीटर के साथ (एप्लिकेशन कोड में)
-- PHP/Python आदि में $query = "SELECT * FROM DemoTable812 WHERE Comments LIKE '%" . $keyword . "%'";
प्रदर्शन विचार
- लीडिंग वाइल्डकार्ड (%text) इंडेक्स उपयोग नहीं कर सकता → फुल टेबल स्कैन
- बड़े टेक्स्ट कॉलम्स के लिए
FULLTEXT INDEXऔरMATCH() AGAINST()उपयोग करें FULLTEXTखोज अधिक शक्तिशाली है: प्राकृतिक भाषा, बूलियन मोड, रैंकिंग
FULLTEXT खोज उदाहरण
ALTER TABLE DemoTable812 ADD FULLTEXT(Comments);
SELECT * FROM DemoTable812
WHERE MATCH(Comments) AGAINST('+Look*' IN BOOLEAN MODE);