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

केस स्टेटमेंट में वर्चर वैल्यू को कनवर्ट करते समय रूपांतरण विफल रहा

CASE . का उपयोग करते समय कथन, सभी परिणाम अभिव्यक्तियों में समान डेटा प्रकार होना चाहिए। यदि नहीं, तो परिणाम को उच्च प्राथमिकता वाले डेटा प्रकार में बदल दिया जाएगा। BOL के अनुसार :

चूंकि INT उच्च डेटा प्रकार वरीयता है VARCHAR . की तुलना में , "Weeks" INT . में कनवर्ट करें और वह त्रुटि उत्पन्न करता है:

एक और उदाहरण जो समान त्रुटि उत्पन्न करेगा:

SELECT CASE WHEN 1 = 1 THEN 'True' ELSE 0 END

समाधान RS.intInterval . को कन्वर्ट करना है करने के लिए VARCHAR :

CONVERT(VARCHAR(10), RS.intInterval)

आपकी अंतिम क्वेरी होनी चाहिए:

DECLARE @bFlag bit
SET @bFlag = 0
SELECT  something = CASE
                WHEN @bFlag = 1 THEN
                    CASE
                        WHEN RS.intInterval = 1 THEN '"Days"'
                        WHEN RS.intInterval = 2 THEN '"Weeks"'
                        WHEN RS.intInterval = 3 THEN '"Months"'
                        WHEN RS.intInterval = 4 THEN '"Years"'
                    END
                Else 
                    CONVERT(VARCHAR(10), RS.intInterval)
                End
from    MyTable  AS RS WITH (NOLOCK)



  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 सर्वर / T-SQL ट्यूटोरियल पार्ट 48

  2. कीवर्ड से मेल खाने के लिए SQL क्वेरी?

  3. 500,000+ पंक्तियों की तालिका में ट्रंकेट तालिका का उपयोग न करते हुए पंक्तियों को कुशलतापूर्वक कैसे हटाएं

  4. इसमें डालें... मर्ज करें... चुनें (एसक्यूएल सर्वर)

  5. C#.NET अनुप्रयोग में SQL सर्वर समय डेटाटाइप का उपयोग करें?