दो LIKE क्लॉज के साथ फर्स्टनेम और लास्टनेम दोनों से फ़िल्टर करना
पहले नाम और अंतिम नाम दोनों के आधार पर रिकॉर्ड खोजने के लिए दो LIKE शर्तों को AND से जोड़ें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(30)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable (StudentName) VALUES ('John Smith');
mysql> INSERT INTO DemoTable (StudentName) VALUES ('David Miller');
mysql> INSERT INTO DemoTable VALUES ('Carol Taylor');
mysql> INSERT INTO DemoTable VALUES ('John Doe');
mysql> INSERT INTO DemoTable VALUES ('Chris Brown');
mysql> INSERT INTO DemoTable VALUES ('Adam Doe');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+---------------+ | StudentId | StudentName | +-----------+---------------+ | 1 | John Smith | | 2 | David Miller | | 3 | Carol Taylor | | 4 | John Doe | | 5 | Chris Brown | | 6 | Adam Doe | +-----------+---------------+
पहला नाम "John" और अंतिम नाम "Doe" वाले रिकॉर्ड के लिए क्वेरी:
mysql> SELECT * FROM DemoTable
WHERE StudentName LIKE '%John%' AND StudentName LIKE '%Doe%';
आउटपुट:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 4 | John Doe | +-----------+-------------+
व्याख्या:
LIKE '%John%'- "John" कहीं भी हो (शुरुआत, मध्य, अंत)LIKE '%Doe%'- "Doe" कहीं भी हो- AND: दोनों शर्तें पूरी होनी चाहिए
- केवल "John Doe" दोनों शर्तों को पूरा करता है
- "John Smith" में "Doe" नहीं है, "Adam Doe" में "John" नहीं है
सीमाएं और सुधार:
- यह "Johnny Doering" जैसे नामों से भी मेल खाएगा (आंशिक मैच)
- सटीक फर्स्ट/लास्ट नेम मैच के लिए, नामों को अलग कॉलम्स में स्टोर करें
- या REGEXP का उपयोग करें:
WHERE StudentName REGEXP '^John .* Doe$'
बेहतर डिजाइन: फर्स्ट नेम और लास्ट नेम के लिए अलग कॉलम्स रखें:
CREATE TABLE Students (
FirstName VARCHAR(30),
LastName VARCHAR(30)
);
-- तब क्वेरी सरल: WHERE FirstName = 'John' AND LastName = 'Doe'