SQL सर्वर डेटाबेस को क्वेरी करते समय, कई बार ऐसा हो सकता है कि आप अपने परिणाम सेट में शून्य मान वापस नहीं करना चाहते हैं। और कई बार ऐसा भी हो सकता है कि आप चाहते हैं कि वे वापस आ जाएं। लेकिन कई बार ऐसा भी हो सकता है कि आप उन्हें वापस करना चाहते हैं, लेकिन एक अलग मूल्य के रूप में।
यह वही है जो ISNULL()
समारोह के लिए है।
ISNULL()
एक T-SQL फ़ंक्शन है जो आपको NULL
. को बदलने की अनुमति देता है अपनी पसंद के निर्दिष्ट मूल्य के साथ।
उदाहरण
यहां एक बुनियादी क्वेरी दी गई है जो एक छोटा सा परिणाम सेट लौटाती है:
SELECT TaskCode AS Result FROM Tasks;
परिणाम:
Result ------ cat123 null null pnt456 rof789 null
हम देख सकते हैं कि तीन पंक्तियाँ हैं जिनमें शून्य मान हैं।
यदि हम नहीं चाहते कि शून्य मान इस तरह दिखाई दें, तो हम ISNULL()
. का उपयोग कर सकते हैं null
. को बदलने के लिए एक अलग मूल्य के साथ।
इस तरह:
SELECT ISNULL(TaskCode, 'N/A') AS Result FROM Tasks;
परिणाम:
Result ------ cat123 N/A N/A pnt456 rof789 N/A
हम इसे खाली स्ट्रिंग से भी बदल सकते हैं:
SELECT ISNULL(TaskCode, '') AS Result FROM Tasks;
परिणाम:
Result ------ cat123 pnt456 rof789
ध्यान दें कि ISNULL()
आवश्यक है कि दूसरा तर्क एक प्रकार का हो जिसे पहले तर्क के डेटा प्रकार में परोक्ष रूप से परिवर्तित किया जा सकता है। ऐसा इसलिए है क्योंकि यह पहले तर्क के डेटा प्रकार का उपयोग करके परिणाम देता है।
शून्य पंक्तियों को गायब होने से रोकना
कुछ टी-एसक्यूएल फ़ंक्शन हैं जहां परिणाम सेट से शून्य मान समाप्त हो जाते हैं। ऐसे मामलों में, शून्य मान बिल्कुल भी वापस नहीं किए जाएंगे।
हालांकि कुछ मामलों में यह एक वांछनीय परिणाम हो सकता है, अन्य मामलों में यह विनाशकारी हो सकता है, यह इस बात पर निर्भर करता है कि डेटा के वापस आने के बाद आपको उसके साथ क्या करना है।
ऐसे फ़ंक्शन का एक उदाहरण है STRING_AGG()
. यह फ़ंक्शन आपको परिणाम सेट को एक सीमित सूची के रूप में वापस करने की अनुमति देता है। हालांकि, यह परिणाम सेट से शून्य मानों को भी हटा देता है। इसलिए यदि हम उपरोक्त नमूना डेटा के साथ इस फ़ंक्शन का उपयोग करते हैं, तो हमें छह के बजाय तीन परिणाम मिलेंगे:
SELECT STRING_AGG(TaskCode, ', ') AS Result FROM Tasks;
परिणाम:
Result ---------------------- cat123, pnt456, rof789
इसलिए शून्य मान वाली तीन पंक्तियाँ वापस नहीं आतीं।
कई मामलों में, यह एक आदर्श परिणाम है, क्योंकि हमारा परिणाम सेट शून्य मानों से भरा नहीं है। हालांकि, यह इस बात पर भी निर्भर करता है कि डेटा का उपयोग किस लिए किया जा रहा है।
इसलिए, यदि हम पंक्तियों को शून्य मानों के साथ बनाए रखना चाहते हैं, तो हम ISNULL()
. का उपयोग कर सकते हैं शून्य मानों को दूसरे मान से बदलने के लिए:
SELECT STRING_AGG(ISNULL(TaskCode, 'N/A'), ', ') AS Result FROM Tasks;
परिणाम:
Result ------------------------------------- cat123, N/A, N/A, pnt456, rof789, N/A
द COALESCE() फंक्शन
ISNULL()
फ़ंक्शन COALESCE()
. के समान तरीके से काम करता है समारोह। तो हम उपरोक्त कोड को इसके साथ बदल सकते हैं:
SELECT STRING_AGG(COALESCE(TaskCode, 'N/A'), ', ') AS Result FROM Tasks;
और वही परिणाम प्राप्त करें:
Result ------------------------------------- cat123, N/A, N/A, pnt456, rof789, N/A
हालाँकि, दो कार्यों के व्यवहार के तरीके में कुछ अंतर हैं। मतभेदों के बारे में अधिक जानकारी के लिए, यहां COALESCE()
की तुलना की गई है और ISNULL()
माइक्रोसॉफ्ट वेबसाइट पर।