परिचय
जब डेटा में विराम चिह्न (punctuation) होते हैं और आप उनके बावजूद पैटर्न मिलान करना चाहते हैं, तो MySQL का LIKE ऑपरेटर स्वाभाविक रूप से इसे संभालता है क्योंकि यह पैटर्न को स्ट्रिंग के भीतर कहीं भी खोजता है।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Comments VARCHAR(20)
-> );
Query OK, 0 rows affected (1.10 sec)
mysql> INSERT INTO DemoTable VALUES('Good,Morning');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('Nice');
Query OK, 1 row affected (0.51 sec)
mysql> INSERT INTO DemoTable VALUES('good,bye!');
Query OK, 1 row affected (0.11 sec)
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+--------------+
| Comments |
+--------------+
| Good,Morning |
| Nice |
| good,bye! |
+--------------+
3 rows in set (0.00 sec)
विराम चिह्न के बावजूद पैटर्न मिलान क्वेरी
mysql> SELECT * FROM DemoTable WHERE Comments LIKE '%good%';
परिणाम
+--------------+
| Comments |
+--------------+
| Good,Morning |
| good,bye! |
+--------------+
2 rows in set (0.00 sec)
व्याख्या
LIKE '%good%'- 'good' उपस्ट्रिंग कहीं भी खोजता है- 'Good,Morning' में 'Good' है (केस-इनसेंसिटिव डिफ़ॉल्ट)
- 'good,bye!' में 'good' है
- विराम चिह्न (कॉमा, विस्मयादिबोधक) बाधा नहीं डालते
- 'Nice' में 'good' नहीं है
केस सेंसिटिविटी
- डिफ़ॉल्ट: केस-इनसेंसिटिव (कोलेशन पर निर्भर, आमतौर पर
_ci) - केस-सेंसिटिव:
WHERE Comments LIKE BINARY '%good%'याCOLLATE utf8mb4_bin
उन्नत: विराम चिह्न अनदेखा करके खोज
यदि आप 'good-morning', 'good.morning', 'good morning' सभी को 'good morning' के रूप में खोजना चाहते हैं:
-- विराम चिह्न हटाकर तुलना
WHERE REPLACE(REPLACE(REPLACE(LOWER(Comments), ',', ''), '!', ''), '.', '') LIKE '%good morning%'
-- या REGEXP
WHERE Comments REGEXP '[[:<:]]good[[:>:]]'; -- शब्द सीमा (MySQL 8.0 से पहले)
सारांश
सरल उपस्ट्रिंग खोज के लिए LIKE '%pattern%' विराम चिह्नों की परवाह किए बिना काम करता है। जटिल सामान्यीकरण के लिए REPLACE चेन या फुलटेक्स्ट सर्च उपयोग करें।