मेरे पास एक तालिका में एक वर्चर कॉलम है जहां मैं उसी डेटा में अपना डेटा दूसरे कॉलम में डालना चाहता हूं जहां इसका डेटा प्रकार धन है। स्रोत कॉलम में से कुछ मान बड़ी संख्या में हैं जिन्हें मैं अनदेखा करना चाहता हूं और बस इन मानों को न्यूल पर सेट करना चाहता हूं।SQL अद्यतन के दौरान पिछले कास्टिंग त्रुटियों को छोड़ने और जारी रखने का सबसे अच्छा तरीका क्या है?
मैं इस कोशिश की:
UPDATE MyTable SET destCol = CASE WHEN IsNumeric(sourceCol) = 1 THEN sourceCol END
लेकिन यह एक 'अंकगणित अतिप्रवाह त्रुटि ... को फेंक देता है, जब यह बड़ी संख्या परीक्षण करने के लिए कोशिश करता है।
मुझे लगता है कि मुझे किसी प्रकार की फ़ंक्शन की आवश्यकता हो सकती है या इच्छित कार्यक्षमता प्राप्त करने के लिए संग्रहीत प्रक्रिया में प्रयास/पकड़ ब्लॉक का उपयोग करना पड़ सकता है।
अद्यतन
मैं स्रोत स्तंभ में मानों में से कुछ का उल्लेख पाठ मान कि सभी पैसे में परिवर्तित नहीं किया जा सकता है भूल गया, इन के साथ-साथ शून्य पर सेट करने की आवश्यकता होगी।
यह काम करेगा यदि यह सभी संख्याएं थी, लेकिन मैं उल्लेख करना भूल गया कि कुछ स्रोत मान टेक्स्ट हैं जिन्हें पैसे में परिवर्तित नहीं किया जा सकता है, अद्यतन देखें। – Crackerjack
@ क्रैकरजेक - क्या यह काम करता है? –
'ISNUMERIC (' 1d2 ') का चयन करें; CAST का चयन करें ('1 डी 2' पैसे के रूप में) '- परिणामस्वरूप '1' में त्रुटि के बाद त्रुटि। मैं हमेशा 'ISNUMERIC' के लिए सबसे बेकार कार्य होने के लिए वोट दूंगा ... –