IS NOT NULL और <> '' का संयोजन
किसी कॉलम से NULL और खाली स्ट्रिंग दोनों को बाहर करने के लिए दो शर्तों का उपयोग करें।
सिंटैक्स
SELECT * FROM yourTableName WHERE yourColumnName IS NOT NULL AND yourColumnName <> '';
उदाहरण
1. टेबल बनाना
mysql> CREATE TABLE DemoTable (Id INT, FirstName VARCHAR(20)); Query OK, 0 rows affected (0.66 sec)
2. डेटा डालना (विभिन्न प्रकार के खाली मान)
mysql> INSERT INTO DemoTable VALUES(100, 'Larry'); mysql> INSERT INTO DemoTable VALUES(101, ''); -- खाली स्ट्रिंग mysql> INSERT INTO DemoTable VALUES(102, 'Chris'); mysql> INSERT INTO DemoTable VALUES(103, NULL); -- NULL mysql> INSERT INTO DemoTable VALUES(104, ' '); -- स्पेस mysql> INSERT INTO DemoTable VALUES(105, 'Robert'); mysql> INSERT INTO DemoTable VALUES(106, NULL); -- NULL
3. सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable;
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Larry | | 101 | | | 102 | Chris | | 103 | NULL | | 104 | | | 105 | Robert | | 106 | NULL | +------+-----------+ 7 rows in set (0.00 sec)
4. NULL और खाली स्ट्रिंग दोनों को छोड़ना
mysql> SELECT * FROM DemoTable
WHERE FirstName IS NOT NULL AND FirstName <> '';
+------+-----------+ | Id | FirstName | +------+-----------+ | 100 | Larry | | 102 | Chris | | 105 | Robert | +------+-----------+ 3 rows in set (0.03 sec)
नोट: स्पेस (' ') शामिल नहीं
उपरोक्त क्वेरी स्पेस वाले मान (Id=104) को नहीं हटाती क्योंकि स्पेस खाली स्ट्रिंग नहीं है।
स्पेस भी हटाने के लिए TRIM() उपयोग करें
SELECT * FROM DemoTable WHERE FirstName IS NOT NULL AND TRIM(FirstName) <> '';
COALESCE का उपयोग (छोटा सिंटैक्स)
SELECT * FROM DemoTable WHERE COALESCE(TRIM(FirstName), '') <> '';
NULLIF का उपयोग
SELECT * FROM DemoTable WHERE NULLIF(TRIM(FirstName), '') IS NOT NULL;
सारांश तालिका
| शर्त | NULL हटाता है | '' हटाता है | ' ' हटाता है |
|---|---|---|---|
| IS NOT NULL | ✅ | ❌ | ❌ |
| <> '' | ❌ | ✅ | ❌ |
| IS NOT NULL AND <> '' | ✅ | ✅ | ❌ |
| TRIM() <> '' | ❌ (एरर) | ✅ | ✅ |
| IS NOT NULL AND TRIM() <> '' | ✅ | ✅ | ✅ |
| COALESCE(TRIM(), '') <> '' | ✅ | ✅ | ✅ |
सर्वोत्तम अभ्यास
- डेटा डालते समय ही वैलिडेशन करें
- कॉलम पर NOT NULL कंस्ट्रेंट लगाएं यदि संभव हो
- TRIM() के साथ इंडेक्स उपयोग नहीं हो पाता (फंक्शनल इंडेक्स MySQL 8.0+ में)