हालांकि यह प्रश्न SQL सर्वर के लिए विशिष्ट है, और यह उत्तर नहीं है, मैंने महसूस किया कि मुझे अभी भी इस जानकारी को पोस्ट करना चाहिए ताकि इसके बारे में जागरूकता बढ़ाई जा सके और किसी अन्य उत्तर के विरोध में न हो।
कहा जा रहा है, SQL सर्वर के बाहर, कुछ वातावरणों में इस प्रकार की छंटाई करना संभव है। यह ऐसा कुछ है जो कम से कम यूनिकोड प्रलेखन में निर्दिष्ट है। में यूनिकोड LOCALE डेटा मार्कअप लैंग्वेज (LDML) भाग 5: COLLATION मानक / रिपोर्ट, वहाँ के लिए एक चार्ट है मिलान सेटिंग कि छँटाई व्यवहार सिलाई के लिए विभिन्न विकल्प वर्णन करता है। विकल्पों में से एक है -kn-true
या [numericOrdering on]
:
यदि सेट किया जाता है , तो दशमलव अंकों (General_Category = Nd [[ UAX44 ]) में किसी भी क्रम को प्राथमिक स्तर पर उसके संख्यात्मक मान के साथ क्रमबद्ध किया जाता है। उदाहरण के लिए, "A-21" <"A-123"। गणना की प्राथमिक वजन के शुरू में सभी कर रहे हैं अंकों पुनर्व्यवस्था समूह। इस प्रकार एक अनकहा यूसीए टेबल के साथ, "एक $" <"a0" <"a2" <"a12" <"a" "<" aa "।
हालांकि, यह दस्तावेज़ एक "तकनीकी मानक" है और कोर यूनिकोड विनिर्देशन का हिस्सा नहीं है। दस्तावेज़ के शीर्ष पर एक नोट बताता है:
एक यूनिकोड तकनीकी मानक (यूटीएस) एक स्वतंत्र विनिर्देश है। यूनिकोड मानक के अनुरूप किसी भी यूटीएस के अनुरूप नहीं है।
इसलिए, यह विशेष व्यवहार SQL सर्वर या .NET में भी उपलब्ध नहीं है (कम से कम मूल रूप से नहीं), भले ही दोनों कोर यूनिकोड विनिर्देश के अनुरूप हों।
आईसीयू परियोजना (यूनिकोड के लिए अंतर्राष्ट्रीय अवयव) है कि लागू इस कार्यक्षमता, और वहाँ है यहां तक कि इसके बारे में एक ऑनलाइन डेमो C / C ++ और जावा पुस्तकालयों का एक सेट है। और "संबंधित प्रोजेक्ट्स" के तहत एक .NET प्रोजेक्ट का एक लिंक है जो ICU लाइब्रेरी के लिए COM ऑब्जेक्ट रैपर लगता है जो इस कार्यक्षमता को प्रबंधित कोड के संपर्क में लाने की अनुमति देगा। लेकिन यह स्पष्ट नहीं है कि .NET प्रोजेक्ट अभी भी सक्रिय है।
लेकिन इस व्यवहार को कार्रवाई में देखने के लिए, ICU Collation Demo पर जाएं ।
बाईं ओर इनपुट पाठ क्षेत्र में निम्नलिखित चिपकाएँ :
1
2
10B
6
11
10A
3
10
सभी विकल्पों को "डिफ़ॉल्ट" पर सेट करें। sortबटन के दाईं ओर "इनपुट लाइन नंबर" विकल्प की जाँच करें, और सुनिश्चित करें कि "अलग ताकत" विकल्प संयुक्त राष्ट्र की जाँच है।
sortबटन पर क्लिक करें और आपको निम्नलिखित प्राप्त करना चाहिए:
[1] 1
[8] 10
[6] 10A
[3] 10B
[5] 11
[2] 2
[7] 3
[4] 6
यह तब होना चाहिए जब एक विशिष्ट स्ट्रिंग सॉर्ट करते समय, और आप SQL सर्वर में क्या देख रहे हैं।
अब, बटन के ठीक ऊपर रेडियो बटन की श्रृंखला में sort, दूसरी पंक्ति को "संख्यात्मक" लेबल किया जाता है। "ऑन" रेडियो बटन का चयन करें।
sortबटन पर फिर से क्लिक करें और आपको निम्नलिखित वापस चाहिए:
[1] 1
[2] 2
[7] 3
[4] 6
[8] 10
[6] 10A
[3] 10B
[5] 11
यह सवाल करना कि क्या सांख्यिक भाग स्ट्रिंग के मध्य में होता है तो यह काम करता है? ठीक है, बाईं ओर इनपुट पाठ क्षेत्र में निम्नलिखित पेस्ट करें (पिछली सूची की जगह):
Script - 1.sql
Script - 2.sql
Script - 10B.sql
Script - 6.sql
Script - 11.sql
Script - 10A.sql
Script - 3.sql
Script - 10.sql
सुनिश्चित करें कि संख्यात्मक सेटिंग अभी भी "चालू" पर सेट है। sortबटन पर फिर से क्लिक करें और आपको निम्नलिखित वापस चाहिए:
[1] Script - 1.sql
[2] Script - 2.sql
[7] Script - 3.sql
[4] Script - 6.sql
[8] Script - 10.sql
[6] Script - 10A.sql
[3] Script - 10B.sql
[5] Script - 11.sql
इसे दूसरी जगह देखना चाहते हैं? अपने हार्डड्राइव पर एक फ़ोल्डर बनाएँ, कुछ जैसे C: \ temp \ sorting \ , और उन्हीं "Script -..." नामों की खाली फाइलें बनाएँ। एक है DIR
एक कमांड विंडो में और आप मानक छंटाई देखेंगे। लेकिन जब आप विंडोज एक्सप्लोरर में फ़ाइलों की सूची देख रहे हैं, तो आपको "संख्यात्मक" विकल्प :-) का उपयोग करके छंटनी हुई सूची दिखाई देगी।