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

चयन केस कास्ट रूपांतरण त्रुटि

आप CASE अभिव्यक्तियों में डेटाटाइप्स को मिश्रित नहीं कर सकते हैं (या कम से कम इस बात का ध्यान रखे बिना कि वे परोक्ष रूप से OK कर देंगे)

जब निम्नलिखित SQL सर्वर की तरह एक बयान के साथ सामना किया जाएगा, तो यह निर्धारित करने के लिए डेटाटाइप प्राथमिकता का उपयोग करेगा कि अभिव्यक्ति का समग्र डेटाटाइप क्या होना चाहिए

SELECT CASE WHEN 1=1 THEN 'not-a-date' ELSE getdate() END

उपरोक्त के लिए datetime char . की तुलना में उच्च प्राथमिकता है इसलिए यह परोक्ष रूप से स्ट्रिंग को उस तारीख तक कास्ट करता है जो विफल हो जाती है।

फ़ोलोइंग सफल होता है हालांकि sql_variant . के रूप में एक उच्च प्राथमिकता है

SELECT CASE WHEN 1=1 THEN cast('not-a-date' as sql_variant) ELSE getdate() END

तो आप इस तरह से कई मिश्रित डेटाटाइप वापस कर सकते हैं (मुझे यकीन नहीं है कि sql_variant कितना आसान है हालांकि साथ काम करना है)

इसके अलावा आप NULL return वापस कर सकते हैं बकवास डेटा वापस करने के बजाय अमान्य डेटाटाइम के लिए या यदि आपको इसे वापस करना होगा तो सब कुछ एक स्ट्रिंग में डाल दें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शीर्ष 5 सुविधाएँ आपके SQL सर्वर डेटाबेस प्रदर्शन निगरानी प्लेटफ़ॉर्म को प्रदान करने की आवश्यकता है

  2. मुझे SQL सर्वर में बिगिन/एंड ब्लॉक्स और गो कीवर्ड का उपयोग कब करना चाहिए?

  3. SQL सर्वर में "अंकगणित अतिप्रवाह त्रुटि अभिव्यक्ति को डेटा प्रकार int में परिवर्तित करना" को ठीक करें

  4. सी # कोड के माध्यम से SQL सर्वर डेटाबेस को कैसे पुनर्स्थापित करें

  5. SQL सर्वर एक कॉलम में अल्पविराम से अलग स्ट्रिंग को सॉर्ट करता है