2013-01-24 32 views
7

मैं जब मैं दोगुना करने के लिए varchar क्षेत्र कन्वर्ट करने के लिए (अंकीय) कोशिश कर रहा था मेरी क्वेरी के साथ समस्या है। मैं इस एसक्यूएल बयान है:वर्चर में डबल में एसक्यूएल कैसे परिवर्तित करें?

SELECT fullName, CAST(totalBal as numeric(9,2) FROM client_info ORDER BY totalBal DESC 

असल में मैं अवरोही क्रम में totalBal मान प्रदर्शित करना चाहते हैं। लेकिन चूंकि वह क्षेत्र वर्कर में है, परिणाम कभी-कभी गलत होता है। यह resultset जब मैं इस कथन का उपयोग क्वेरी करने के लिए करने की कोशिश की है:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

ResultSet है:

enter image description here

totalBal की छंटाई सही नहीं है। इसलिए मैं सांख्यिक को varchar कन्वर्ट करने के लिए इतना है कि यह पूरी तरह से हल हो सकता है फैसला किया। कोई उपाय?

उत्तर

16

उपयोग DECIMAL() या NUMERIC() के रूप में वे सटीक और बड़े पैमाने संख्या तय कर रहे हैं।

SELECT fullName, 
     CAST(totalBal as DECIMAL(9,2)) _totalBal 
FROM client_info 
ORDER BY _totalBal DESC 
+0

इस विचार ... इस के साथ कोड अद्यतन के लिए धन्यवाद ... 'चयन पूरा नाम, कास्ट (totalBal दशमलव के रूप में (9, 2)) AS totBal क्लाइंट_इन्फो टोटलबेल डीईएससी ' –

+0

द्वारा ऑर्डर करें आपका स्वागत है ': डी' –

0

यह अधिक वांछनीय हो सकता है, कि उपयोग नाव है बजाय

SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC 
+3

" फ्लैट के रूप में CAST "MySQL में मान्य नहीं है। तो यह सब पर काम नहीं करता। – m4ttsson