परिचय
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 = ? बेहतर है।