MySQL में CHAR(1) कॉलम में NULL डालना: sql_mode सेटिंग
MySQL के सख्त मोड (STRICT_TRANS_TABLES) में, CHAR(1) कॉलम में NULL डालने पर चेतावनी मिल सकती है लेकिन मान डल जाता है। sql_mode को उचित रूप से सेट करके इसे नियंत्रित किया जा सकता है।
उदाहरण: Gender CHAR(1) NULL कॉलम में NULL डालें
टेबल बनाएं:
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50),
Gender CHAR(1) NULL
);
sql_mode सेट करें और NULL डालें
SET sql_mode = 'STRICT_TRANS_TABLES'; INSERT INTO DemoTable (Name, Gender) SELECT 'Chris', NULL; INSERT INTO DemoTable (Name, Gender) SELECT 'David', NULL; INSERT INTO DemoTable (Name, Gender) SELECT 'Mike', 'M';
परिणाम:
+----+-------+--------+ | Id | Name | Gender | +----+-------+--------+ | 1 | Chris | NULL | | 2 | David | NULL | | 3 | Mike | M | +----+-------+--------+
sql_mode समझें
STRICT_TRANS_TABLES— ट्रांजैक्शनल टेबल के लिए सख्त मोड: अमान्य मान पर त्रुटि (चेतावनी नहीं)STRICT_ALL_TABLES— सभी टेबल के लिए सख्त मोड- डिफॉल्ट MySQL 5.7+ में
STRICT_TRANS_TABLESसक्षम होता है
CHAR(1) में NULL vs खाली स्ट्रिंग
| NULL | खाली स्ट्रिंग '' | |
|---|---|---|
| अर्थ | मान अज्ञात/अनुपस्थित | मान ज्ञात है लेकिन खाली |
| स्टोरेज | NULL बिटमैप में 1 बिट | 1 बाइट (CHAR के लिए निश्चित) |
| LENGTH() | NULL | 0 |
सिफारिश
CHAR(1)के बजायENUM('M','F')याTINYINTउपयोग करेंNULLअनुमति दें यदि लिंग वैकल्पिक है- एप्लिकेशन लेवल पर मान्यकरण करें