Sql क्वेरी का उपयोग करके एक स्ट्रिंग को int में कनवर्ट करें


168

SQL Server 2005 पर SQL क्वेरी का उपयोग करके एक स्ट्रिंग को पूर्णांक में कैसे परिवर्तित करें?

जवाबों:


296

आप CAST या CONVERT का उपयोग कर सकते हैं :

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table

4
खेतों में से एक गैर-संख्यात्मक होने पर मैं अपवाद को कैसे पकड़ / रोक सकता हूं? मुझे उम्मीद थी कि यह 0.
च्लोए

40
यह पाया:select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
क्लो

9
बस एक शब्द: IsNumeric()कुछ विकृत परिणाम उत्पन्न कर सकता है। यह स्ट्रिंग के लिए TRUE लौटाएगा "-", जो तब भी एक त्रुटि का कारण बनेगा जब आप इसे एक नंबर पर डालने का प्रयास करेंगे।
कर्ट

3
IsNumeric स्ट्रिंग्स के लिए सही होगा "-" केवल यदि स्ट्रिंग उदाहरण के लिए "-5" या "-20" है, तो यह "5-", "-2-1" जैसे स्ट्रिंग्स के लिए गलत होगा। इसलिए अगर न्यूमेरिक () सत्य है, तो रूपांतरण किसी भी अपवाद को नहीं फेंकना चाहिए
प्रत्यूष धनुका

11

यह भी ध्यान रखें कि जब संख्यात्मक स्ट्रिंग '56.72'से INT में परिवर्तित किया जा रहा है तो आप SQL त्रुटि के खिलाफ आ सकते हैं।

Conversion failed when converting the varchar value '56.72' to data type int.

इस के आसपास पाने के लिए बस दो धर्मान्तरित हैं:

STRING -> NUMERIC -> INT

या

SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)

जब TableA से TableB में डेटा कॉपी किया जाता है, तो रूपांतरण निहित होता है, इसलिए आपको दूसरे कन्वर्ट की आवश्यकता नहीं है (यदि आप निकटतम INT के लिए खुश हैं)

INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA

8

SQL सर्वर 2012 से शुरू होकर, आप TRY_PARSE या TRY_CONVERT का उपयोग कर सकते हैं ।

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)

मूल प्रश्न के लिए निश्चित रूप से सही उत्तर नहीं है क्योंकि यह SQL Server 2005 के संबंध में था, लेकिन चूंकि यह 2019 है और SQL सर्वर के पुराने संस्करण के लिए बहुत कम लोग हैं, इसलिए यह उत्तर निश्चित रूप से सहायक है।
शॉन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.