मुख्य अंतर: PHP बनाम MySQL
PHP में खाली स्ट्रिंग ('') अक्सर NULL के बराबर व्यवहार करती है, लेकिन MySQL में खाली स्ट्रिंग NULL के बराबर नहीं है। एक NOT NULL कॉलम खाली स्ट्रिंग स्वीकार कर सकता है।
प्रदर्शन
NOT NULL कॉलम के साथ टेबल बनाना
mysql> CREATE TABLE EmptyStringNotNullDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(10) NOT NULL,
PRIMARY KEY(Id)
);
खाली स्ट्रिंग डालना (सफल)
mysql> INSERT INTO EmptyStringNotNullDemo(Name) VALUES('John');
mysql> INSERT INTO EmptyStringNotNullDemo(Name) VALUES(''); -- खाली स्ट्रिंग
mysql> INSERT INTO EmptyStringNotNullDemo(Name) VALUES('Carol');
mysql> INSERT INTO EmptyStringNotNullDemo(Name) VALUES(''); -- खाली स्ट्रिंग
mysql> INSERT INTO EmptyStringNotNullDemo(Name) VALUES(''); -- खाली स्ट्रिंग
mysql> INSERT INTO EmptyStringNotNullDemo(Name) VALUES('Larry');
डेटा
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | | | 3 | Carol | | 4 | | | 5 | | | 6 | Larry | +----+-------+
जांच: क्या खाली स्ट्रिंग NULL है?
mysql> SELECT Name, Name IS NULL AS EmptyValueIsNotNULL FROM EmptyStringNotNullDemo;
+-------+---------------------+ | Name | EmptyValueIsNotNULL | +-------+---------------------+ | John | 0 | | | 0 | | Carol | 0 | | | 0 | | | 0 | | Larry | 0 | +-------+---------------------+
सभी पंक्तियों के लिए 0 (गलत) — खाली स्ट्रिंग NULL नहीं है।
यूजर-डिफाइंड वेरिएबल के साथ खाली स्ट्रिंग अपडेट करना
mysql> SET @emptyStringValue = ''; mysql> UPDATE EmptyStringNotNullDemo SET Name = @emptyStringValue;
अपडेट के बाद
+----+------+ | Id | Name | +----+------+ | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | | +----+------+
महत्वपूर्ण निहितार्थ
| परिदृश्य | परिणाम |
|---|---|
INSERT INTO t (col) VALUES ('') जहां col NOT NULL | सफल — खाली स्ट्रिंग डाली जाती है |
INSERT INTO t (col) VALUES (NULL) जहां col NOT NULL | त्रुटि — NULL अस्वीकार |
WHERE col = '' | केवल खाली स्ट्रिंग मिलती है, NULL नहीं |
WHERE col IS NULL | केवल NULL मिलती है, खाली स्ट्रिंग नहीं |
WHERE col IS NOT NULL | खाली स्ट्रिंग शामिल है |
सर्वोत्तम अभ्यास
- यदि "कोई मान नहीं" का अर्थ है, तो
NULLउपयोग करें (और कॉलम कोNULLअनुमति दें)। - यदि खाली स्ट्रिंग एक वैध मान है (जैसे वैकल्पिक मध्य नाम), तो
NOT NULLके साथ खाली स्ट्रिंग अनुमति दें। - सुसंगत रहें: एप्लिकेशन कोड में खाली स्ट्रिंग को
NULLमें सामान्य करें या इसके विपरीत।