Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में NULL को किसी अन्य मान से कैसे बदलें - ISNULL ()

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() माइक्रोसॉफ्ट वेबसाइट पर।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TransactSQL एक और TransactSQL स्क्रिप्ट चलाने के लिए

  2. SQL सर्वर में पहचान () बनाम पहचान ():क्या अंतर है?

  3. टीएसक्यूएल ईमेल सत्यापन (रेगेक्स के बिना)

  4. INFORMATION_SCHEMA बनाम sysobjects

  5. बेहतर गतिशील SQL से बचने के लिए 10 SP_EXECUTESQL गोचास