हाय मैं निम्नलिखितअद्यतन कॉलम को महत्व देता
update userloginstats set logouttime= sysdate where logouttime= null;
के रूप में एक तालिका को अपडेट करना चाहते लेकिन यह शून्य मान वाले स्तंभ को अद्यतन नहीं किया। क्या गलत है
हाय मैं निम्नलिखितअद्यतन कॉलम को महत्व देता
update userloginstats set logouttime= sysdate where logouttime= null;
के रूप में एक तालिका को अपडेट करना चाहते लेकिन यह शून्य मान वाले स्तंभ को अद्यतन नहीं किया। क्या गलत है
...where logouttime is null;
^^^^^^^
NULL
को बदलें यह एक विशेष मूल्य है और हम इसके साथ हमेशा की तरह =
ऑपरेटर का उपयोग नहीं कर सकते।
Oracle documentation for NULL से:
nulls के लिए परीक्षण करने के लिए, का उपयोग केवल तुलना की स्थिति शून्य है और शून्य नहीं है। यदि आप नल के साथ किसी भी अन्य स्थिति का उपयोग करते हैं और नतीजा शून्य के मान पर निर्भर करता है, तो नतीजा अनजान है क्योंकि नल डेटा की कमी का प्रतिनिधित्व करता है, एक शून्य किसी भी मूल्य या किसी अन्य मूल्य के बराबर या असमान नहीं हो सकता है
logouttime is null
, = null
नहीं। null
किसी भी चीज़ के बराबर नहीं है, यहां तक कि खुद भी नहीं। इस प्रकार, ऑपरेटर is
।
आप is null
उपयोग करने के लिए नहीं = null
update userloginstats set logouttime= sysdate where logouttime is null;
आप = साथ NULLs तुलना नहीं कर सकते की जरूरत है।
इस का उपयोग करें:
update userloginstats set logouttime= sysdate where logouttime is null;
nulls के लिए आप का उपयोग करना चाहिए "शून्य है" या बल्कि = ऑपरेटर की तुलना में "नहीं NULL है"। ऐसा इसलिए है क्योंकि शून्य तकनीकी रूप से न तो सही या गलत है, बल्कि यह किसी भी तरह की कीमत की अनुपस्थिति है।
अधिकांश प्रोग्रामिंग भाषाएं आमतौर पर सुविधा के लिए झूठी झूठी होती हैं (और इस प्रकार = ऑपरेटर के उपयोग को सक्षम करती हैं), लेकिन एसक्यूएल सही और गलत तरीके से अधिक शुद्ध दृष्टिकोण लेता है।
<एक और जवाब जोड़ने के लिए प्रलोभन का विरोध करना जो वास्तव में वही बात कहता है ...> –