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

त्रुटि संदेश 4151 को ठीक करें "NULLIF के लिए पहले तर्क का प्रकार NULL स्थिरांक नहीं हो सकता क्योंकि SQL सर्वर में पहले तर्क के प्रकार को जानना होगा"

यदि आपको त्रुटि संदेश 4151 " NULLIF के पहले तर्क का प्रकार NULL स्थिरांक नहीं हो सकता है क्योंकि पहले तर्क के प्रकार को जानना होगा SQL सर्वर में, ऐसा इसलिए है क्योंकि आप NULLIF() के पहले तर्क के रूप में एक शून्य मान पास कर रहे हैं समारोह।

इस त्रुटि को ठीक करने के लिए, सुनिश्चित करें कि आप फ़ंक्शन के पहले तर्क के रूप में अशक्त स्थिरांक को पास नहीं करते हैं। या यदि आप करते हैं, तो इसे एक विशिष्ट डेटा प्रकार में परिवर्तित करें।

त्रुटि का उदाहरण

यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:

SELECT NULLIF(null, 7);

परिणाम:

Msg 4151, Level 16, State 1, Line 1
The type of the first argument to NULLIF cannot be the NULL constant because the type of the first argument has to be known.

SQL सर्वर में, NULLIF() फ़ंक्शन का रिटर्न मान पहली अभिव्यक्ति के डेटा प्रकार का उपयोग करता है। इसका मतलब है कि पहला मान शून्य स्थिरांक नहीं होना चाहिए, क्योंकि शून्य स्थिरांक का कोई ज्ञात डेटा प्रकार नहीं है।

यह त्रुटि काफी दुर्लभ होनी चाहिए। ज्यादातर मामलों में, आप पहले तर्क के रूप में एक कॉलम नाम पास करेंगे, और SQL सर्वर में, कॉलम में एक परिभाषित डेटा प्रकार होता है। ऐसे मामलों में, एक शून्य मान वास्तव में स्वीकार किया जाएगा, इस तथ्य के कारण कि SQL सर्वर कॉलम के डेटा प्रकार को जानता है।

चर के लिए भी यही कहा जा सकता है। यदि आप एक चर पास करते हैं, तो आपको इसके प्रकार की घोषणा करनी होगी, और इसलिए, आपको त्रुटि नहीं मिलेगी।

किसी भी स्थिति में, यदि आपको यह त्रुटि मिलती है, तो आप निम्न समाधान आज़मा सकते हैं।

समाधान

यदि आपको यह त्रुटि मिलती है, तो आप अशक्त स्थिरांक को एक विशिष्ट डेटा प्रकार में बदल सकते हैं:

SELECT NULLIF(CAST(null AS int), 7);

परिणाम:

NULL

इस मामले में NULL लौटा दिया जाता है, क्योंकि दो तर्क अलग हैं और NULL पहला तर्क है।

यदि पहला तर्क एक कॉलम है, तो आपको इसके प्रकार को बदलने के बारे में चिंता करने की आवश्यकता नहीं होगी, क्योंकि कॉलम में पहले से ही एक डेटा प्रकार है।

मान लीजिए हमारे पास एक ProductPrice है कॉलम:

SELECT ProductPrice
FROM Products;

परिणाम:

+----------------+
| ProductPrice   |
|----------------|
| 25.99          |
| 14.75          |
| 11.99          |
| 0.00           |
| 0.00           |
| NULL           |
| 9.99           |
| 25.99          |
+----------------+

कॉलम में एक शून्य मान है।

हालांकि, हम उस कॉलम को NULLIF() . पर पास कर सकते हैं बिना किसी त्रुटि के 4151:

SELECT NULLIF(ProductPrice, 0) AS Result
FROM Products;

परिणाम:

+----------+
| Result   |
|----------|
| 25.99    |
| 14.75    |
| 11.99    |
| NULL     |
| NULL     |
| NULL     |
| 9.99     |
| 25.99    |
+----------+

हमें कोई त्रुटि नहीं मिली, क्योंकि SQL सर्वर पहले से ही कॉलम के डेटा प्रकार को जानता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HTTP स्थिति 401 के साथ अनुरोध विफल हुआ:SSRS में अनधिकृत

  2. एक पंक्ति की आईडी प्राप्त करना जिसे मैंने Sql सर्वर में अपडेट किया है

  3. प्रत्येक संकलन के बाद पहली बार लोड करने के लिए इकाई ढांचा बहुत धीमा

  4. SQL सर्वर में डेटाबेस का नाम कैसे बदलें - SQL सर्वर / TSQL ट्यूटोरियल भाग 26

  5. एसक्यूएल सर्वर यूनियन लेकिन ऑर्डर रखें