LIKE '%' वाइल्डकार्ड का उपयोग
WHERE क्लॉज के साथ LIKE '%' का उपयोग करके सभी रिकॉर्ड्स प्राप्त कर सकते हैं, हालांकि यह व्यावहारिक नहीं है।
सिंटैक्स
SELECT * FROM yourTableName WHERE yourColumnName LIKE '%';
उदाहरण
1. टेबल बनाना
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20)
);
Query OK, 0 rows affected (0.56 sec)
2. डेटा डालना
mysql> INSERT INTO DemoTable(Name) VALUES('Larry');
mysql> INSERT INTO DemoTable(Name) VALUES('John');
mysql> INSERT INTO DemoTable(Name) VALUES('Bob');
mysql> INSERT INTO DemoTable(Name) VALUES('Carol');
mysql> INSERT INTO DemoTable(Name) VALUES('Chris');
mysql> INSERT INTO DemoTable(Name) VALUES('David');
mysql> INSERT INTO DemoTable(Name) VALUES('Mike');
mysql> INSERT INTO DemoTable(Name) VALUES('Sam');
3. सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable;
+----+-------+ | Id | Name | +----+-------+ | 1 | Larry | | 2 | John | | 3 | Bob | | 4 | Carol | | 5 | Chris | | 6 | David | | 7 | Mike | | 8 | Sam | +----+-------+ 8 rows in set (0.00 sec)
4. WHERE LIKE '%' के साथ
mysql> SELECT * FROM DemoTable WHERE Name LIKE '%';
+----+-------+ | Id | Name | +----+-------+ | 1 | Larry | | 2 | John | | 3 | Bob | | 4 | Carol | | 5 | Chris | | 6 | David | | 7 | Mike | | 8 | Sam | +----+-------+ 8 rows in set (0.00 sec)
महत्वपूर्ण नोट्स
SELECT * FROM DemoTable;लिखें - सरल और तेज़- WHERE क्लॉज तभी उपयोग करें जब वास्तविक फ़िल्टर हो
- LIKE '%' इंडेक्स का उपयोग नहीं कर पाता (फुल टेबल स्कैन)
LIKE पैटर्न संदर्भ
| पैटर्न | मिलान |
|---|---|
| % | कोई भी स्ट्रिंग (खाली सहित) - NULL नहीं |
| _ | कोई भी एक कैरेक्टर |
| %abc% | जिसमें 'abc' हो |
| abc% | 'abc' से शुरू होने वाला |
| %abc | 'abc' पर खत्म होने वाला |
NULL मानों का व्यवहार
-- NULL मान LIKE '%' से मेल नहीं खाते! INSERT INTO DemoTable(Name) VALUES(NULL); SELECT * FROM DemoTable WHERE Name LIKE '%'; -- NULL पंक्ति नहीं दिखेगी -- NULL भी शामिल करने के लिए SELECT * FROM DemoTable WHERE Name LIKE '%' OR Name IS NULL;
डायनामिक WHERE क्लॉज बनाने के लिए
एप्लिकेशन कोड में जब WHERE क्लॉज वैकल्पिक हो:
-- PHP उदाहरण $where = $searchTerm ? "WHERE Name LIKE '%$searchTerm%'" : "WHERE Name LIKE '%'"; $sql = "SELECT * FROM DemoTable $where";
बेहतर विकल्प
-- वैकल्पिक फ़िल्टर के लिए
SELECT * FROM DemoTable
WHERE (@searchTerm IS NULL OR Name LIKE CONCAT('%', @searchTerm, '%'));