MySQL में NULL और खाली स्ट्रिंग '' **अलग** हैं। दोनों की जांच के लिए CASE स्टेटमेंट का उपयोग करके प्रत्येक स्थिति के लिए अलग संदेश/मान दे सकते हैं।
सिंटैक्स
SELECT *,
CASE
WHEN yourColumn = '' THEN 'Empty string message'
WHEN yourColumn IS NULL THEN 'NULL message'
ELSE CONCAT(yourColumn, ' is a value')
END AS status
FROM yourTableName;
उदाहरण के साथ समझें
टेबल बनाएं:
CREATE TABLE checkFieldDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(10),
PRIMARY KEY(Id)
);
NULL, खाली स्ट्रिंग, और सामान्य मान डालें:
INSERT INTO checkFieldDemo(Name) VALUES(NULL);
INSERT INTO checkFieldDemo(Name) VALUES('John');
INSERT INTO checkFieldDemo(Name) VALUES(NULL);
INSERT INTO checkFieldDemo(Name) VALUES(''); -- खाली स्ट्रिंग
INSERT INTO checkFieldDemo(Name) VALUES('Carol');
INSERT INTO checkFieldDemo(Name) VALUES(''); -- खाली स्ट्रिंग
INSERT INTO checkFieldDemo(Name) VALUES(NULL);
सभी रिकॉर्ड देखें:
SELECT * FROM checkFieldDemo;
आउटपुट:
+----+-------+
| Id | Name |
+----+-------+
| 1 | NULL |
| 2 | John |
| 3 | NULL |
| 4 | | -- खाली स्ट्रिंग
| 5 | Carol |
| 6 | | -- खाली स्ट्रिंग
| 7 | NULL |
+----+-------+
CASE से प्रत्येक स्थिति पहचानें
SELECT *,
CASE
WHEN Name = '' THEN 'It is an empty string'
WHEN Name IS NULL THEN 'It is a NULL value'
ELSE CONCAT(Name, ' is a Name')
END AS ListOfValues
FROM checkFieldDemo;
परिणाम:
+----+-------+-----------------------+
| Id | Name | ListOfValues |
+----+-------+-----------------------+
| 1 | NULL | It is a NULL value |
| 2 | John | John is a Name |
| 3 | NULL | It is a NULL value |
| 4 | | It is an empty string |
| 5 | Carol | Carol is a Name |
| 6 | | It is an empty string |
| 7 | NULL | It is a NULL value |
+----+-------+-----------------------+
महत्वपूर्ण: NULL तुलना नियम
| एक्सप्रेशन | परिणाम | व्याख्या |
|---|---|---|
NULL = '' | NULL | FALSE नहीं, UNKNOWN |
NULL = NULL | NULL | FALSE नहीं, UNKNOWN |
NULL IS NULL | TRUE | सही जांच |
'' = '' | TRUE | खाली स्ट्रिंग तुलना |
'' IS NULL | FALSE | खाली स्ट्रिंग ≠ NULL |
WHERE क्लॉज में उपयोग
-- केवल NULL
WHERE Name IS NULL
-- केवल खाली स्ट्रिंग
WHERE Name = ''
-- NULL या खाली स्ट्रिंग दोनों
WHERE Name IS NULL OR Name = ''
-- नॉन-NULL और नॉन-खाली
WHERE Name IS NOT NULL AND Name <> ''
COALESCE/IFNULL के साथ सरलीकरण
-- NULL को खाली स्ट्रिंग मानें
SELECT CASE WHEN COALESCE(Name, '') = '' THEN 'Empty/NULL' ELSE Name END FROM table;
-- या IFNULL
SELECT CASE WHEN IFNULL(Name, '') = '' THEN 'Empty/NULL' ELSE Name END FROM table;
नोट
CASEक्रम महत्वपूर्ण है: पहली मैचिंग शर्त 실행 होती हैWHEN Name = ''पहले रखें, फिरWHEN Name IS NULL- उल्टा क्रम भी काम करेगा क्योंकि
NULL = ''कभी TRUE नहीं होता - एप्लिकेशन लेवल पर भी NULL और खाली स्ट्रिंग का अलग हैंडलिंग करें