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

सीटीई रिटर्निंग एरर

SQL Server में सेलेक्ट स्टेटमेंट का लॉजिकल प्रोसेसिंग ऑर्डर है , जो निर्धारित करता है कि एक चरण में परिभाषित वस्तुओं को बाद के चरणों में खंडों को उपलब्ध कराया जाता है:

  1. से
  2. चालू
  3. शामिल हों
  4. कहां
  5. ग्रुप बाय
  6. घन के साथ या रोलअप के साथ
  7. हो रहा है
  8. चुनें
  9. DISTINCT
  10. आदेश दें
  11. शीर्ष

इस प्रकार आपकी क्वेरी को आगे बढ़ाया जा रहा है और आपकी क्वेरी बिल्कुल ठीक दिखती है। लेकिन कभी-कभी, SQL Server आपकी क्वेरी को अनुकूलित करने के लिए इस आदेश का पालन नहीं करने का निर्णय लेता है।

आपके मामले में, SQL Server हो सकता है कि आपकी क्वेरी को किसी अन्य में सरलता से परिवर्तित/रूपांतरित कर रहा हो और convert कर रहा हो फ़ंक्शन, लागू करने से पहले where isnumeric छानना

यदि हमने आपकी क्वेरी को थोड़ा और जटिल बना दिया है (लेकिन फिर भी वही परिणाम दे रहे हैं), तो SQL Server इस बार कोड को सही तरीके से निष्पादित कर रहा है:

;with isnum AS ( 
    SELECT result
    FROM #temp 
    WHERE ISNUMERIC(result) = 1
    GROUP BY result
    HAVING MAX(result) = result
)
SELECT 
    result, 
    ISNUMERIC(result)
FROM isnum
WHERE CONVERT(INT,result) > 1;

आपके मामले में (और यह वही है जो मैं ऐसी स्थितियों में कर रहा हूं जब विभिन्न प्रकार एक कॉलम में संग्रहीत होते हैं), आप बस TRY_CONVERT समारोह:

;with isnum AS ( 
SELECT result 
FROM #temp 
WHERE ISNUMERIC(result) = 1)

SELECT 
    result, 
    ISNUMERIC(result)
FROM isnum
WHERE TRY_CONVERT(INT, result) > 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर संख्या से कॉलम का चयन करें

  2. कनेक्शनस्ट्रिंग गुण VB.NET में त्रुटि प्रारंभ नहीं किया गया है

  3. Google शैली सुझाए गए खोज परिणामों को वापस करने के लिए T-SQL संग्रहीत कार्यविधि

  4. Sql सर्वर नियतात्मक उपयोगकर्ता-परिभाषित फ़ंक्शन

  5. SQL सर्वर टेबल और पिवट में शामिल होता है