मैं 2000 संगतता मोड में SQL सर्वर का उपयोग कर एक विरासत प्रणाली पर काम कर रहा हूं। एक संग्रहीत कार्यविधि है जो किसी क्वेरी से वर्चुअल तालिका में चयन करती है।

जब मैं क्वेरी चलाता हूं, तो मुझे निम्न त्रुटि मिलती है:

डेटा प्रकार varchar को संख्यात्मक में बदलने में त्रुटि

जो शुरू में मुझे बताता है कि कुछ स्ट्रिंग एक संख्यात्मक कॉलम में अपना रास्ता बनाने की कोशिश कर रहा है।

डीबग करने के लिए, मैंने वर्चुअल टेबल को भौतिक तालिका के रूप में बनाया और प्रत्येक कॉलम को समाप्त करना शुरू कर दिया।

अपराधी कॉलम को accnum कहा जाता है (जो एक बैंक खाता संख्या संग्रहीत करता है, जिसमें स्रोत डेटा प्रकार varchar(21) होता है), जिसे मैं एक numeric(16,0) कॉलम में डालने का प्रयास कर रहा हूं, जो स्पष्ट रूप से मुद्दों का कारण बन सकता है।

इसलिए मैंने accnum कॉलम varchar(21) के साथ-साथ मेरे द्वारा बनाई गई भौतिक तालिका में भी बनाया और यह 100% आयात करता है। मैंने accnum2 नामक एक अतिरिक्त कॉलम भी जोड़ा और इसे numeric(16,0) बना दिया।

डेटा आयात होने के बाद, मैंने accnum2 को accnum के मान में अपडेट करना जारी रखा। देखो और देखो, यह बिना किसी त्रुटि के अद्यतन होता है, फिर भी यह एक डालने के साथ काम नहीं करेगा ... क्वेरी का चयन करें।

मुझे प्रदान किए गए डेटा प्रकारों के साथ काम करना है। कोई विचार मैं इसके आसपास कैसे हो सकता हूं?

0
Thomas 20 पद 2018, 01:35

1 उत्तर

सबसे बढ़िया उत्तर

क्या आप इस तरह अपने सम्मिलन कथन में रूपांतरण का उपयोग करने का प्रयास कर सकते हैं:

SELECT [accnum] = CASE ISNUMERIC(accnum) 
                     WHEN 0 THEN NULL 
                     ELSE CAST(accnum AS NUMERIC(16, 0)) 
                  END
1
marc_s 20 पद 2018, 08:12