2012-05-17 11 views
11

में काम नहीं करता है, मुझे फ्लोट के रूप में डाले गए वर्चर कॉलम को सॉर्ट करने का कोई तरीका नहीं मिल रहा है।CAST ऑपरेटर का उपयोग करके फ्लोरैट के रूप में एक VARCHAR कॉलम को सॉर्ट करना MySQL

SELECT guid, number FROM table ORDER BY 'CAST(number AS FLOAT) DESC' 

"संख्या" कॉलम इस तरह परिभाषित किया गया है: यहाँ मेरी एसक्यूएल अनुरोध है

number varchar(20) ascii_general_ci 

और मूल्यों अपने परीक्षण के लिए इस स्तंभ में परिभाषित कर रहे हैं:

0.00 
200.00 
20.00 
100.00 

MySQL पूरी तरह से CAST ऑपरेटर को अनदेखा करें और कॉलम को guid द्वारा क्रमबद्ध करें ...

क्या MySQL में कोई बग है या मैंने किया ओ कुछ गलत है?

+0

^^ 'ऑर्डर द्वारा' कास्ट (संख्या एएस फ्लोट) डीईएससी के परिणाम 'ऑर्डर बाय' फू 'या' ऑर्डर द्वारा 'ehrlkherklth ektl k'' के समान होते हैं। आपके कथन में 'ORDER BY' समझ में नहीं आता ...... – arnoudhgz

उत्तर

32

इस चाल का प्रयास करें (संख्या के रूप में तार सुलझाने के लिए मदद करता है) -

SELECT guid, number FROM table ORDER BY number * 1 DESC 

यह MySQL में मदद मिलेगी संख्या के लिए स्ट्रिंग कास्ट करने के लिए।


एक अन्य समाधान -

...CAST(value as DECIMAL(10,5)) 
+0

यह काम करता है !!! अभी भी समझ में नहीं आता है कि CAST ऑपरेटर क्यों काम नहीं करता है लेकिन आपकी चाल मेरी समस्या का समाधान करती है। –

+2

आप फ्लोट पर नहीं डाले जा सकते हैं। CAST फ़ंक्शन संदर्भ पर नज़र डालें, कोई फ़्लोट प्रकार नहीं है। – Devart

+1

वूह, आप बहुत सही हैं, अगर मैं करता हूं: उद्धरण के बिना सीईएसटी (संख्या के रूप में हस्ताक्षर किए गए) डीईएससी द्वारा टेबल ऑर्डर से संख्या चुनें, यह काम करता है! मैंने हस्ताक्षर किए बिना कोशिश की लेकिन उद्धरण के बिना नहीं। बहुत बहुत धन्यवाद –

0

आप GUID ले लिया है तो आकार varchar(40) कि Insted होना चाहिए आप उपयोग कर सकते uuid()

मैं इसे

select uuid(), number order by 'cast(number as float) desc'; 
का उपयोग किया जाता है

यह ठीक काम कर रहा है। यदि आप नहीं चाहते हैं तो आप अपना पूरा कोड भेज सकते हैं?

+0

आप बस एक निश्चित स्ट्रिंग द्वारा ऑर्डर कर रहे हैं –

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