मैं MySQL और PostgreSQL के बारे में नहीं जानता, लेकिन मुझे इसका इलाज आमतौर पर करना चाहिए।
एक डीबीएमएस है जिसका नाम है ओरेकल, जो इसे NULL और '' के बीच के उपयोगकर्ताओं को चुनने की अनुमति नहीं देता है। यह स्पष्ट रूप से दर्शाता है कि दोनों के बीच अंतर करना आवश्यक नहीं है। कुछ कष्टप्रद परिणाम हैं:
आप varchar2 को इस तरह एक खाली स्ट्रिंग पर सेट करते हैं:
Update mytable set varchar_col = '';
निम्नलिखित उसी परिणाम की ओर जाता है
Update mytable set varchar_col = NULL;
लेकिन उन स्तंभों का चयन करने के लिए जहां मान रिक्त है या NULL, आपको उपयोग करना होगा
select * from mytable where varchar_col is NULL;
का उपयोग करते हुए
select * from mytable where varchar_col = '';
वाक्यात्मक रूप से सही है, लेकिन यह कभी एक पंक्ति नहीं लौटाता है।
दूसरी ओर, जब ओरेकल में स्ट्रैटनिंग स्ट्रिंग्स। खाली वर्कशॉप को खाली तारों के रूप में माना जाता है।
select NULL || 'abc' from DUAL;
पैदावार abc । अन्य DBMS इन मामलों में NULL लौटा देंगे।
जब आप स्पष्ट रूप से व्यक्त करना चाहते हैं, तो एक मान असाइन किया गया है, आपको '' जैसे कुछ का उपयोग करना होगा।
और आपको चिंता करनी होगी कि क्या ट्रिमिंग नेल में खाली परिणाम नहीं है
select case when ltrim(' ') is null then 'null' else 'not null' end from dual
ऐसा होता है।
अब DBMS को देखना जहाँ '' NULL (जैसे SQL- सर्वर) के समान नहीं है
'' के साथ काम करना आम तौर पर आसान होता है और ज्यादातर मामलों में दोनों के बीच अंतर करने की कोई व्यावहारिक आवश्यकता नहीं होती है। जिन अपवादों को मैं जानता हूं, उनमें से एक यह है कि जब आपका कॉलम कुछ सेटिंग का प्रतिनिधित्व करता है और आपने उनके लिए खाली डिफॉल्ट नहीं किया है। जब आप '' और NULL में अंतर कर सकते हैं तो आप यह व्यक्त करने में सक्षम हैं कि आपकी सेटिंग खाली है और इससे बचें कि डिफ़ॉल्ट लागू होता है।
NULL
या नहीं