MySQL में NOT NULL कंस्ट्रेंट वाले कैरेक्टर टाइप कॉलम में 'NULL' स्ट्रिंग (टेक्स्ट) को वैल्यू के रूप में इन्सर्ट किया जा सकता है, क्योंकि 'NULL' स्ट्रिंग और SQL NULL मान दो अलग चीजें हैं।
उदाहरण
test2 टेबल में NAME कॉलम पर NOT NULL कंस्ट्रेंट है:
mysql> DESCRIBE test2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | | NULL | | | NAME | varchar(20) | NO | | NULL | | +-------+-------------+------+-----+---------+-------+
'NULL' स्ट्रिंग इन्सर्ट करें
mysql> INSERT INTO test2 VALUES(2, 'NULL'); Query OK, 1 row affected (0.06 sec) mysql> SELECT * FROM test2; +----+--------+ | id | NAME | +----+--------+ | 1 | Gaurav | | 2 | NULL | +----+--------+
अंतर समझना: NULL vs 'NULL'
1. IS NULL चेक (SQL NULL के लिए)
mysql> DELETE FROM test2 WHERE name IS NULL; Query OK, 0 rows affected (0.00 sec) -- 0 पंक्तियाँ प्रभावित = कोई SQL NULL नहीं मिला
2. = 'NULL' चेक (स्ट्रिंग 'NULL' के लिए)
mysql> DELETE FROM test2 WHERE name = 'NULL'; Query OK, 1 row affected (0.09 sec) -- 1 पंक्ति प्रभावित = स्ट्रिंग 'NULL' मिली और डिलीट हुई
परिणाम
mysql> SELECT * FROM test2; +----+--------+ | id | NAME | +----+--------+ | 1 | Gaurav | +----+--------+
मुख्य अंतर सारांश
| पहलू | SQL NULL | स्ट्रिंग 'NULL' |
|---|---|---|
| प्रकृति | मान की अनुपस्थिति | वास्तविक टेक्स्ट मान |
| चेक | IS NULL / IS NOT NULL | = 'NULL' / != 'NULL' |
| NOT NULL कंस्ट्रेंट | ब्लॉक करता है | अनुमति देता है |
| लंबाई | N/A | 4 कैरेक्टर |
सावधानी: एप्लिकेशन लेवल पर 'NULL' स्ट्रिंग का उपयोग भ्रम पैदा कर सकता है - बेहतर है खाली स्ट्रिंग ('') या विशेष मार्कर जैसे 'N/A' उपयोग करें।