LNNVL एक ऐसा फंक्शन है जिसे फंक्शन में बनाया गया है जो FALSE या UNKNOWN के मूल्यांकन की शर्तों के लिए TRUE लौटाता है, और TRUE का मूल्यांकन करने वाली शर्तों के लिए FALSE देता है। मेरा प्रश्न यह है कि केवल NULL मान संभालने के बजाय सत्य स्थिति के विपरीत लौटने का क्या लाभ होगा?
उदाहरण के लिए, मान लीजिए कि आपके पास StartCommission और CurrentCommission कॉलम वाली नलिका है जिसमें नल हो सकते हैं। निम्नलिखित रिटर्न न केवल मूल्य शून्य के साथ पंक्तियाँ:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission;
यदि आप उन पंक्तियों को शामिल करना चाहते हैं जहाँ या तो कमीशन शून्य है तो आप कुछ इस तरह से कर सकते हैं:
SELECT * FROM Emp WHERE StartCommission = CurrentCommission
OR StartCommission IS NULL OR CurrentCommission IS NULL;
ऐसा लगता है कि इस वाक्य रचना को छोटा करने के लिए एक फ़ंक्शन मौजूद होगा, लेकिन LNNVL का उपयोग करने से सभी गैर-समान रिकॉर्ड और सभी रिकॉर्ड शून्य के साथ वापस आ जाते हैं।
SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission);
यह जोड़ने के लिए केवल नल के बिना पंक्तियों को नहीं लौटाता है। यह मुझे लगता है कि इस मामले के लिए वांछित कार्यक्षमता सही स्थितियों को सही रखने के लिए होगी, गलत स्थितियों को गलत और सत्य के लिए अज्ञात परिस्थितियों का मूल्यांकन करना होगा। क्या मैंने वास्तव में यहां कम उपयोग का मामला बनाया है? क्या सच में अज्ञात को सच में, असत्य में और असत्य को सत्य में बदलना चाहते हैं?
create table emp (StartCommission Number(3,2), CurrentCommission Number(3,2));
insert into emp values (null,null);
insert into emp values (null,.1);
insert into emp values (.2,null);
insert into emp values (.3,.4);