खाली स्ट्रिंग्स
ORACLE में एक खाली स्ट्रिंग का उपयोग प्रतिनिधित्व . करने के लिए किया जाता है शून्य। वस्तुतः बाकी सभी चीजों में, हालांकि, एक खाली स्ट्रिंग अभी भी एक स्ट्रिंग है, और इसलिए NULL नहीं है।
आईएनटीएस
आपके मामले में आप वास्तव में एक INT कॉलम में STRINGS डाल रहे हैं। यह एक निहित . को बाध्य करता है कास्ट ऑपरेशन।
जब आपका RDBMS स्ट्रिंग को कनवर्ट कर रहा हो ''
एक आईएनटी के लिए इसे मान 0 प्राप्त करना होगा। चूंकि 0 न्यूल नहीं है, यह डाला जाता है।
एक अधिक मान्य परीक्षण होगा:
INSERT INTO `plekz`.`countries` (`Column1 ` , `Column2`)
VALUES (66, NULL);
संपादित करें
क्षमा करें, मैंने आपका प्रश्न केवल आधा पढ़ा। आप यह भी पूछें कि ''
. को कैसे रोकें डाला जा रहा है।
आपकी पहली समस्या यह है कि आप STRINGS डाल रहे हैं और तालिका को INT फ़ील्ड के रूप में परिभाषित किया गया है। आप सम्मिलित किए जाने वाले डेटा पर बाधाएं डाल सकते हैं, लेकिन ये बाधाएं मान बाद . पर लागू होंगी एक आईएनटी में रूपांतरण। जब तक आप 0
. मान को रोकना नहीं चाहते सम्मिलित होने से, इस परिदृश्य को रोकने के लिए आप तालिका में कुछ नहीं कर सकते।
आपकी बेहतर शर्त यह पता करना है कि आप पहली जगह में तार क्यों डाल रहे हैं। आप एक संग्रहीत प्रक्रिया का उपयोग कर सकते हैं जो स्ट्रिंग को आईएनटी में परिवर्तित करने और फिर उन्हें डालने से पहले जांचता है और जांचता है। या, और भी बेहतर, आप अपने क्लाइंट एप्लिकेशन में जांच कर सकते हैं।
एक तकनीकी रूप से उपलब्ध विकल्प फ़ील्ड को CHAR फ़ील्ड बनाना है, फिर ''
को रोकने के लिए फ़ील्ड पर एक बाधा डालना है डालने से। मैं दृढ़ता से इसके खिलाफ सिफारिश करें।