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

SQL सर्वर में "COALESCE के लिए कम से कम एक तर्क एक अभिव्यक्ति होना चाहिए जो NULL स्थिरांक नहीं है" ठीक करें

SQL सर्वर में, यदि आपको त्रुटि संदेश 4127 मिल रहा है जिसमें लिखा है "COALESCE के लिए कम से कम एक तर्क एक अभिव्यक्ति होना चाहिए जो NULL स्थिरांक नहीं है", यह शायद इसलिए है क्योंकि आपके सभी तर्क COALESCE() अभिव्यक्ति NULL हैं स्थिर।

इस समस्या को ठीक करने के लिए, सुनिश्चित करें कि कम से कम एक तर्क NULL नहीं है स्थिर।

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

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

SELECT COALESCE( null, null );

हमें यह मिलता है:

Msg 4127, Level 16, State 1, Line 1
At least one of the arguments to COALESCE must be an expression that is not the NULL constant.

इस मामले में, सभी तर्क NULL . थे स्थिर, और इसलिए एक त्रुटि लौटा दी गई।

समाधान

समाधान आसान है। हमें केवल यह सुनिश्चित करने की आवश्यकता है कि कम से कम एक तर्क NULL नहीं है स्थिर:

SELECT COALESCE(null, 'Cat', 'Dog');

परिणाम:

Cat

इस मामले में, Cat पहला गैर था-NULL तर्क, और इसलिए COALESCE() वह मान लौटा दिया।

जैसा कि यहां देखा गया है, NULL . को शामिल करना ठीक है एक तर्क के रूप में स्थिर, जब तक कम से कम एक अन्य तर्क भी है जो नहीं है NULL स्थिर।

NULL एक्सप्रेशन और डेटाबेस कॉलम

ध्यान दें कि NULL स्थिरांक एक अभिव्यक्ति के समान नहीं है जिसके परिणामस्वरूप NULL . होता है . और यह डेटाबेस कॉलम के समान नहीं है जिसमें NULL . है .

उदाहरण के लिए, यदि सभी तर्क डेटाबेस कॉलम का संदर्भ देते हैं, और वे डेटाबेस कॉलम NULL . हैं , तो हमें त्रुटि नहीं मिलती है।

मान लीजिए कि हम निम्नलिखित क्वेरी चलाते हैं:

SELECT CustomerId, CustomerCategoryId
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

परिणाम:

CustomerId  CustomerCategoryId
----------- ------------------
NULL        NULL

दोनों कॉलम में NULL है मान।

तो अगर हम दोनों कॉलम COALESCE() . पर पास करते हैं , हमें NULL . का परिणाम मिलता है :

SELECT COALESCE( CustomerId, CustomerCategoryId )
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

परिणाम:

NULL

यदि हम किसी एक कॉलम को NULL . से बदलते हैं तो भी यही बात लागू होती है स्थिर:

SELECT COALESCE( CustomerId, null )
FROM Sales.SpecialDeals
WHERE SpecialDealId = 1;

परिणाम:

NULL

तो यह तभी है जब सब तर्क हैं NULL निरंतर कि हमें एक त्रुटि मिलती है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में MIN और MAX कुल कार्य

  2. कॉमा से अलग किए गए कॉलम के मान को पंक्तियों में बदलें

  3. SQL सर्वर में पैरेंट टेबल, संदर्भ तालिका, विदेशी कुंजी बाधा नाम और कॉलम कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 71

  4. SQL सर्वर में दो तिथियों के बीच सभी सप्ताहों की शुरुआत और समाप्ति तिथियां कैसे प्राप्त करें?

  5. XML क्रमांकन के लिए StringWriter का उपयोग करना