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

MySQL में LIKE और CONCAT से टेबल में संग्रहीत शब्दों को टेक्स्ट में खोजें

MySQL में एक टेबल में संग्रहीत शब्दों को किसी बड़े टेक्स्ट में खोजने के लिए LIKE ऑपरेटर के साथ CONCAT() फ़ंक्शन का उपयोग करें। यह पैटर्न डायनामिक कीवर्ड खोज, सामग्री फ़िल्टरिंग, या टैग मिलान के लिए उपयोगी है।

सिंटैक्स

SELECT keyword_column FROM keyword_table
WHERE 'search_text' LIKE CONCAT('%', keyword_column, '%');

व्यावहारिक उदाहरण

कीवर्ड टेबल बनाएं:

mysql> CREATE TABLE DemoTable1316 (Value VARCHAR(40));

mysql> INSERT INTO DemoTable1316 VALUES('MySQL');
mysql> INSERT INTO DemoTable1316 VALUES('Java');
mysql> INSERT INTO DemoTable1316 VALUES('MongoDB');
mysql> INSERT INTO DemoTable1316 VALUES('C++');

कीवर्ड देखें:

mysql> SELECT * FROM DemoTable1316;
+---------+
| Value   |
+---------+
| MySQL   |
| Java    |
| MongoDB |
| C++     |
+---------+

टेक्स्ट में कीवर्ड खोजने की क्वेरी

टेक्स्ट: "Deep Dive using Java is good for advanced knowledge, but not MySQL"

mysql> SELECT Value
    -> FROM DemoTable1316
    -> WHERE ('Deep Dive using Java is good for advanced knowledge, but not MySQL') 
    -> LIKE CONCAT('%', Value, '%');

परिणाम

+-------+
| Value |
+-------+
| MySQL |
| Java  |
+-------+

कैसे काम करता है

  1. CONCAT('%', Value, '%') प्रत्येक कीवर्ड के लिए %MySQL%, %Java% आदि पैटर्न बनाता है
  2. LIKE जांचता है कि खोज टेक्स्ट में वह पैटर्न मौजूद है या नहीं
  3. मेल खाने वाले कीवर्ड परिणाम में लौटाए जाते हैं

केस-इनसेंसिटिव खोज (डिफ़ॉल्ट)

MySQL का डिफ़ॉल्ट कोलेशन केस-इनसेंसिटिव होता है, इसलिए java, Java, JAVA सभी मेल खाएंगे।

केस-सेंसिटिव खोज के लिए

WHERE 'search_text' LIKE CONCAT('%', Value, '%') COLLATE utf8mb4_bin

प्रदर्शन विचार

  • बड़े कीवर्ड टेबल के लिए यह फुल टेबल स्कैन करता है
  • फुल-टेक्स्ट खोज (MATCH() ... AGAINST()) बड़े डेटासेट के लिए तेज़ है
  • छोटे-मध्यम कीवर्ड सूचियों (सैकड़ों तक) के लिए यह तरीका सरल और प्रभावी है

विस्तार: मिलान की स्थिति भी प्राप्त करें

SELECT Value, 
       LOCATE(Value, 'Deep Dive using Java is good for advanced knowledge, but not MySQL') AS Position
FROM DemoTable1316
WHERE 'Deep Dive using Java is good for advanced knowledge, but not MySQL' LIKE CONCAT('%', Value, '%');

यह तकनीक सामग्री मॉडरेशन, ऑटो-टैगिंग, कीवर्ड हाइलाइटिंग, और खोज सुझाव प्रणालियों में व्यापक रूप से उपयोग की जाती है।

  1. - MySQL टेबल से SELECT 1 का क्या अर्थ है

    किसी भी टेबल नाम से select 1 स्टेटमेंट का अर्थ है कि यह केवल 1 लौटाता है। उदाहरण के लिए, यदि किसी टेबल में 4 रिकॉर्ड हैं तो यह 1 को चार बार लौटाएगा। आइए एक उदाहरण देखते हैं। सबसे पहले, हम CREATE कमांड का उपयोग करके एक टेबल बनाएंगे। ); Query OK, 0 rows affected (0.51 sec) रिकॉर्ड्स डालना insert

  1. - MySQL SELECT क्वेरी: किसी टेबल से उन रो को चुनें जो दूसरी टेबल में नहीं हैं

    हमारे उदाहरण के लिए, हम दो टेबल बनाएंगे और नेचुरल लेफ्ट जॉइन लागू करके उन रो को प्राप्त करेंगे जो पहली टेबल में हैं लेकिन दूसरी में नहीं। पहली टेबल बनाना। mysql> create table FirstTableDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.48 sec) पहली ट

  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर