2015-10-21 5 views
6

में कनवर्ट करने में त्रुटि यदि मैं नीचे SQL क्वेरी चलाता हूं; मैं निम्नलिखित त्रुटि मिलती है:SQL सर्वर: डेटा प्रकार nvarchar को संख्यात्मक

Error converting data type nvarchar to numeric.

COLUMNA दशमलव के बाद दो अंक से ऊपर अधिक से अधिक के साथ क्षेत्रों सहित केवल संख्या (नकारात्मक और सकारात्मक) शामिल हैं और डॉट दशमलव के रूप में जमा है।

IF OBJECT_ID('st00_TABLEA','U') IS NOT NULL DROP TABLE [st00_TABLEA] 
SELECT 
    COLUMNA AS COLUMNA_s 
    ,CASE WHEN [COLUMNA] = '' THEN 0 ELSE CONVERT(NUMERIC(18,2),REPLACE([COLUMNA],',','.')) END AS COLUMNA 
INTO st00_TABLEA 
FROM dbosu.TABLEA; 

मैं भी निम्न, लेकिन अभी भी एक ही समस्या की कोशिश की:

IF OBJECT_ID('st00_TABLEA','U') IS NOT NULL DROP TABLE [st00_TABLEA] 
SELECT 
    COLUMNA AS COLUMNA_s 
    ,CONVERT(DECIMAL(18,2),COLUMNA) AS COLUMNA 
INTO st00_TABLEA 
FROM dbosu.TABLEA; 
+0

से यूमेरिक मान आप COLUMNA –

+0

का नमूना जोड़ सकते हैं, मैं इसके लिए नया हूं; मैं नमूना कैसे अपलोड/कर सकता हूं? – bbilal

उत्तर

15

आप स्तंभ में डेटा को संशोधित करने की आवश्यकता हो सकती है, लेकिन वैसे भी आप निम्न में से एक कर सकते हैं: -

1- जांच अगर यह संख्यात्मक है तो परिवर्तित इसे किसी और 0

Select COLUMNA AS COLUMNA_s, CASE WHEN Isnumeric(COLUMNA) = 1 
THEN CONVERT(DECIMAL(18,2),COLUMNA) 
ELSE 0 END AS COLUMNA 

2- केवल n चयन की तरह एक और मूल्य डाल कॉलम

SELECT COLUMNA AS COLUMNA_s ,CONVERT(DECIMAL(18,2),COLUMNA) AS COLUMNA 
where Isnumeric(COLUMNA) = 1 
+0

आपके इनपुट के लिए धन्यवाद; यह अब मुझे एक और त्रुटि देता है हालांकि: गैर-बूलियन प्रकार की एक अभिव्यक्ति जिसमें एक संदर्भ की अपेक्षा की जाती है, 'REGEXP' के पास। – bbilal

+0

@bbilal कृपया अभी जांचें, मैंने –

+0

प्रश्नों को अपडेट किया है धन्यवाद! अब यह काम कर रहा है। तो आपकी क्वेरी में आप जांचते हैं कि कक्ष संख्यात्मक हैं या नहीं; अगर हाँ; फिर उन्हें परिवर्तित करें। जो मुझे समझ में नहीं आता है; COLUMNA वास्तव में तालिका में केवल संख्यात्मक मान है (नकारात्मक और सकारात्मक संख्या, साथ ही शून्य दोनों)। क्या आप जानते हैं कि क्यों संख्यात्मक संख्या अभी भी जरूरी है? – bbilal

संबंधित मुद्दे