2013-07-20 13 views
6

SELECT test_column FROM test_table ORDER BY test_column मुझे देता है यह:एसक्यूएल - आदेश सही ढंग से काम नहीं कर रहा है?

1 
12 
123 
2 
3 

क्यों नहीं:

1 
2 
3 
12 
123 

@JosephPla आप बिंदु मिल गया, धन्यवाद। मैं तारों की तरह तारों को कैसे क्रमबद्ध कर सकता हूं?

+7

आप स्ट्रिंग द्वारा और ना कि मान द्वारा आदेश दे रहे हैं। –

+0

किस प्रकार सी कॉलम test_column? – slavoo

+0

कुछ करें test_table ORDER से test_table ORDER से कनवर्ट करें (int, test_column) –

उत्तर

12

SELECT test_column 
FROM test_table 
ORDER BY cast(test_column as int) 

प्रयास करें लेकिन आप सही लोगों के लिए स्तंभ प्रकार बदलते ध्यान देना चाहिए।

+0

यह ध्यान देने योग्य है कि 'CAST' किसी भी अनुक्रमणिका का उपयोग नहीं करेगा। – Kermit

2

क्रमबद्ध है। यह एक शब्दावली प्रकार (वर्णमाला) है। ऐसा प्रतीत होता है कि उस कॉलम में एक टेक्स्ट (char, varchar, ...) प्रकार है, इसलिए आपको जो ऑर्डर मिल जाएगा वह टेक्स्टुअल और न्यूमेरिक नहीं है।

यदि आप संख्यात्मक प्रकार चाहते हैं, तो एक संख्यात्मक कॉलम प्रकार (उदा। Int) का उपयोग करें। (या स्तंभ उचित रूप से डाली।)

2

जांचें कि कॉलम का प्रकार वर्चर या कुछ समान है या नहीं। ऐसा लगता है कि इसे स्ट्रिंग मान द्वारा क्रमबद्ध किया जा रहा है, न कि संख्यात्मक मूल्य से। यदि कॉलम में केवल संख्याएं हैं तो यह बेहतर प्रकार int होना चाहिए।

3

यह मैं काम करते हैं: -

+1

धन्यवाद मेरे लिए भी काम किया। – Harsha

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