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

MySQL में LIKE ऑपरेटर के साथ एकाधिक फील्ड्स पर समान मान खोजना

परिचय

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

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable (
    -> StudentName VARCHAR(20),
    -> StudentSubject VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.58 sec)
mysql> INSERT INTO DemoTable VALUES('John', 'MySQL');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES('Adam', 'MySQL');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES('John', 'Java');
Query OK, 1 row affected (0.34 sec)
mysql> INSERT INTO DemoTable VALUES('Carol', 'Java');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('John', 'MongoDB');
Query OK, 1 row affected (0.12 sec)

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-------------+----------------+
| StudentName | StudentSubject |
+-------------+----------------+
| John        | MySQL          |
| Adam        | MySQL          |
| John        | Java           |
| Carol       | Java           |
| John        | MongoDB        |
+-------------+----------------+
5 rows in set (0.00 sec)

एकाधिक फील्ड्स पर LIKE खोज क्वेरी

mysql> SELECT * FROM DemoTable
    -> WHERE CONCAT(StudentName, ' ', StudentSubject) LIKE '%John MySQL%';

परिणाम

+-------------+----------------+
| StudentName | StudentSubject |
+-------------+----------------+
| John        | MySQL          |
+-------------+----------------+
1 row in set (0.00 sec)

व्याख्या

  • CONCAT(StudentName, ' ', StudentSubject) - दोनों कॉलम को स्पेस के साथ जोड़ता है
  • परिणाम: 'John MySQL', 'Adam MySQL', 'John Java', 'Carol Java', 'John MongoDB'
  • LIKE '%John MySQL%' - केवल 'John MySQL' मेल खाता है

अन्य दृष्टिकोण

1. अलग शर्तें (अधिक सटीक, इंडेक्स योग्य)

SELECT * FROM DemoTable
WHERE StudentName = 'John' AND StudentSubject = 'MySQL';

2. CONCAT_WS (NULL-सुरक्षित जोड़)

WHERE CONCAT_WS(' ', StudentName, StudentSubject) LIKE '%John MySQL%'

3. फुलटेक्स्ट सर्च (बड़े टेक्स्ट के लिए)

ALTER TABLE DemoTable ADD FULLTEXT(name_subject_idx) (StudentName, StudentSubject);
SELECT * FROM DemoTable WHERE MATCH(StudentName, StudentSubject) AGAINST('John MySQL');

कब CONCAT+LIKE उपयोग करें

  • त्वरित एड-हॉक खोज
  • छोटे टेबल
  • जब सटीक कॉलम मान नहीं, बल्कि संयुक्त पैटर्न खोजना हो

चेतावनी

  • इंडेक्स उपयोग नहीं कर सकता (फुल टेबल स्कैन)
  • CONCAT में NULL होने पर परिणाम NULL होता है → CONCAT_WS या COALESCE उपयोग करें
  • सेपरेटर महत्वपूर्ण है: 'JohnMySQL' बनाम 'John MySQL'

सटीक मिलान के लिए अलग WHERE col1 = ? AND col2 = ? बेहतर है।

  1. - MySQL में LIKE के साथ एकाधिक शब्दों से रिकॉर्ड कैसे फ़िल्टर करें?

    MySQL में किसी कॉलम को एकाधिक पैटर्न/शब्दों के विरुद्ध फ़िल्टर करने के लिए, RLIKE (या REGEXP) ऑपरेटर का उपयोग करें जो रेगुलर एक्सप्रेशन ऑल्टरनेशन (|) सपोर्ट करता है। यह एकाधिक LIKE शर्तों से अधिक संक्षिप्त और लचीला है। उदाहरण: SQL या Python वाले विषय खोजना डेमो टेबल बनाएं: mysql> CREATE TABLE

  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