LIKE पैटर्न के साथ प्रीफिक्स मैचिंग
"Joh" से शुरू होने वाले सभी नाम खोजने के लिए LIKE 'Joh%' पैटर्न का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Name VARCHAR(40)
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES ('John');
mysql> INSERT INTO DemoTable VALUES ('Sam');
mysql> INSERT INTO DemoTable VALUES ('Mike');
mysql> INSERT INTO DemoTable VALUES ('Ethan');
mysql> INSERT INTO DemoTable VALUES ('Johnson');
mysql> INSERT INTO DemoTable VALUES ('Bob');
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+---------+ | Name | +---------+ | John | | Sam | | Mike | | Ethan | | Johnson | | Bob | +---------+
"Joh" से शुरू होने वाले मान खोजने के लिए क्वेरी (सबक्वेरी में UNION का उपयोग करते हुए):
mysql> SELECT * FROM (
SELECT Name AS myValue FROM DemoTable
UNION
SELECT Name FROM DemoTable
) tbl WHERE myValue LIKE 'Joh%';
आउटपुट:
+---------+ | myValue | +---------+ | John | | Johnson | +---------+
व्याख्या:
LIKE 'Joh%'- "Joh" से शुरू होने वाले सभी स्ट्रिंग्स (Joh के बाद कुछ भी)- UNION: डुप्लिकेट्स हटाता है (यहां दोनों SELECT समान हैं, इसलिए UNION का प्रभाव डुप्लिकेट हटाना है)
myValueएलियास सबक्वेरी कॉलम को नाम देता है
सरल संस्करण (अनुशंसित):
SELECT Name FROM DemoTable WHERE Name LIKE 'Joh%';
उपरोक्त क्वेरी समान परिणाम देती है लेकिन सरल और अधिक कुशल है।
केस सेंसिटिविटी: डिफॉल्ट केस-इनसेंसिटिव। केस-सेंसिटिव: WHERE Name LIKE BINARY 'Joh%'।
इंडेक्स उपयोग: LIKE 'Joh%' (प्रीफिक्स) इंडेक्स उपयोग कर सकता है। LIKE '%Joh%' (कहीं भी) इंडेक्स उपयोग नहीं कर सकता।