2010-09-24 10 views
15

में कनवर्ट करने के लिए मुझे एक समग्र फ़ंक्शन का उपयोग करके कॉलम की कुल राशि के लिए पूछताछ करना है। कॉलम डेटा प्रकार NVARCHAR (MAX) है। मैं इसे इंटीजर में कैसे परिवर्तित कर सकता हूं?एसवीएल क्वेरी एनवार्चर को int

मैं इस की कोशिश की है:

SELECT SUM(CAST(amount AS INT)), 
     branch 
    FROM tblproducts 
    WHERE id = 4 
GROUP BY branch 

... लेकिन मैं हो रही है:

रूपांतरण विफल जब डेटा प्रकार int nvarchar मान '3600.00' परिवर्तित।

क्यों फ्लोट:

उत्तर

29

3600,00 तो पहले नाव

sum(CAST(CAST(amount AS float) AS INT)) 

संपादित करें के माध्यम से कास्ट पूर्णांक नहीं है?

  • सभी पंक्तियों में सटीक या पैमाने का पता नहीं: नाव, कम बुराई है शायद
  • रिक्त स्ट्रिंग नाव के लिए शून्य करने के लिए डाली जाएगा दशमलव
  • नाव पर विफल रहता है 5E-02 की तरह सामान स्वीकार करता है, पर विफल रहता है दशमलव
+0

कारण है कि आप नाव चुना से, के रूप में दिया गया दशमलव करने का विरोध किया? मैं सिर्फ उत्सुक/सीखने की कोशिश कर रहा हूं :) – JNK

+0

@ जेएनके: क्योंकि यह दशमलव के बाद अधिक सहनशील है। हमें परिशुद्धता या स्केल का कोई अंदाजा नहीं है, खाली स्ट्रिंग फ्लोट के लिए शून्य पर डाली जाएगी, फ्लोट 5E-02 जैसी सामग्री स्वीकार करता है ... – gbn

8

GBN के जवाब देने के लिए इसके अलावा, आप गैर-संख्यात्मक मामलों के खिलाफ की रक्षा करने की जरूरत है:

sum(CASE WHEN ISNUMERIC(Amount)=1 THEN CAST(CAST(amount AS float) AS INT)END) 
0

का चयन करें राशि (Try_Parse (इंट के रूप में राशि 'en-US') का उपयोग करना), शाखा tblproducts
कहां आईडी = 4 ग्रुप शाखा द्वारा