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

MySQL क्वेरी विराम चिह्न के कारण मेल नहीं खा रही?

परिचय

जब डेटा में विराम चिह्न (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 चेन या फुलटेक्स्ट सर्च उपयोग करें।

  1. - MySQL क्वेरी में "नॉट ग्रेटर दैन" (<=) ऑपरेटर का उपयोग कैसे करें?

    MySQL में नॉट ग्रेटर दैन (नहीं अधिक) तुलना के लिए <= (कम या बराबर) ऑपरेटर का उपयोग किया जाता है। यह सरल और मानक SQL सिंटैक्स है। सिंटैक्स SELECT * FROM your_table_name WHERE your_column_name <= value; व्यावहारिक उदाहरण छात्रों के अंकों वाली एक टेबल बनाते हैं: INSERT INTO DemoTable1480 VALUE

  1. - MySQL में टेबल में मौजूद न होने वाले मानों को कैसे क्वेरी करें?

    MySQL में किसी टेबल में मौजूद नहीं होने वाले मानों को खोजने के लिए, UNION ALL के साथ WHERE NOT EXISTS या NOT IN का उपयोग करें। यह गैप विश्लेषण या मिसिंग सीक्वेंस खोजने के लिए उपयोगी है। उदाहरण: मिसिंग ऑटो-इन्क्रीमेंट मान खोजना ऑटो-इन्क्रीमेंट टेबल बनाएं: mysql> CREATE TABLE DemoTable1918 (

  1. - MySQL क्वेरी दर्ज करना

    कंसोल पर क्वेरी दर्ज करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि उपयोगकर्ता सर्वर से जुड़ा हुआ है। नीचे दी गई क्वेरी सर्वर के संस्करण संख्या और वर्तमान तारीख देगी। mysql> SELECT VERSION(), CURRENT_DATE; नोट: फंक्शन VERSION() और CURRENT_DATE केस-इनसेंसिटिव हैं। इसका मतलब version(), Version(