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

MySQL में LIKE IN() कैसे करें?


REGEXP का उपयोग करके MySQL में "LIKE IN()" पैटर्न मिलान

MySQL में LIKE IN() सीधा सिंटैक्स नहीं है, लेकिन आप REGEXP (नियमित अभिव्यक्ति) का उपयोग करके समान परिणाम प्राप्त कर सकते हैं।

सिंटैक्स

SELECT * FROM टेबल_नाम WHERE कॉलम_नाम REGEXP 'मान1|मान2|मान3|...|मानN';

उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE INDemo (Id INT, Name VARCHAR(100));
mysql> INSERT INTO INDemo VALUES
    -> (100, 'John'), (104, 'Carol'), (108, 'David'),
    -> (112, 'Smith'), (116, 'Johnson'), (120, 'Sam');

2. REGEXP से मिलान (Id 112, 116, या 100)

mysql> SELECT * FROM INDemo WHERE Id REGEXP '112|116|100';
+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 112  | Smith   |
| 116  | Johnson |
+------+---------+

3. तुलना: IN() के साथ

mysql> SELECT * FROM INDemo WHERE Id IN(112, 116, 100);
+------+---------+
| Id   | Name    |
+------+---------+
| 100  | John    |
| 112  | Smith   |
| 116  | Johnson |
+------+---------+

REGEXP बनाम IN()

विशेषताIN()REGEXP
प्रकारसटीक मिलानपैटर्न मिलान
प्रदर्शनतेज़ (इंडेक्स उपयोग कर सकता है)धीमा (फुल स्कैन)
लचीलापनसटीक मानपैटर्न, वाइल्डकार्ड
केस संवेदनशीलताकॉलेशन पर निर्भरडिफ़ॉल्ट केस-असंवेदनशील

स्ट्रिंग कॉलम के लिए पैटर्न मिलान

-- नाम 'J' से शुरू होने वाले
SELECT * FROM INDemo WHERE Name REGEXP '^J';

-- नाम 'n' पर समाप्त होने वाले
SELECT * FROM INDemo WHERE Name REGEXP 'n$';

-- 'John' या 'Johnson' वाले
SELECT * FROM INDemo WHERE Name REGEXP 'John|Johnson';

चेतावनी

  • REGEXP इंडेक्स का उपयोग नहीं करता (MySQL 8.0 में कुछ सुधार)
  • बड़े डेटासेट पर प्रदर्शन प्रभाव हो सकता है
  • विशेष रेगेक्स वर्णों (., *, +, ?, ^, $, |, (), [], {}) को एस्केप करें
  • सटीक मिलान के लिए IN() पसंद करें
  1. - MySQL क्वेरी में दो बार LIKE क्लॉज का उपयोग

    OR ऑपरेटर से एकाधिक LIKE शर्तें जोड़ें एक कॉलम पर दो अलग-अलग पैटर्न से फ़िल्टर करने के लिए OR के साथ दो LIKE क्लॉज का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable2009 ( Name varchar(20) ); Query OK, 0 rows affected (0.51 sec) mysql> insert into DemoTable2009 values(John

  1. - MySQL में दशमलव बिंदु से दो स्थान पहले का अंक कैसे प्राप्त करें

    समाधान DIV ऑपरेटर का उपयोग करके पूर्णांक विभाजन करें। उदाहरण टेबल बनाएं: INSERT INTO demo1 VALUES (456.54), (50.64), (1000.78); क्वेरी SELECT value DIV 10 % 10 FROM demo1; परिणाम +-----------------+ | value DIV 10%10 | +-----------------+ | 5 | | 5 | | 0

  1. - MySQL में डायनामिक ऐरे के साथ LIKE क्वेरी कैसे करें?

    सिंटैक्स select * from yourTableName where yourColumnName2 like %yourValue% order by yourColumnName1 asc limit yourLimitValue; उदाहरण: कॉमा-सेपरेटेड नामों में खोज insert into demo74(user_names) values(John Smith1,John Smith2,John Smith3), (John Smith1), (David Smith1), (John Smith1,John Smith2,Jo