Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

टी-एसक्यूएल - अल्फ़ान्यूमेरिक पर ऑर्डर करें

सबसे आसान उपाय है शून्य को पहले से पेंड करना

Select ...
From Table
Order By Right( '0000000000' + YourColumn, 10)

हालांकि, यह अल्फा वर्णों के लिए जिम्मेदार नहीं होगा। अल्फा वर्णों से निपटने के लिए, आपको यह जानना होगा कि आपके पास कितने संभावित अल्फा वर्ण हो सकते हैं। अगर कोई है, तो आप कुछ ऐसा कर सकते हैं:

Select ...
From #Test
Order By Case
    When IsNumeric(NumVal) = 1 Then Right('0000000000' + NumVal + '0', 10)
    Else Right('0000000000' + NumVal, 10)
    End

जोड़

टेस्ट रन:

If object_id('tempdb..#Test') is not null
    Drop Table #Test

Create Table #Test ( NumVal varchar(10) )
Insert #Test(NumVal) Values('02')
Insert #Test(NumVal) Values('03')
Insert #Test(NumVal) Values('1a')
Insert #Test(NumVal) Values('1b')
Insert #Test(NumVal) Values('10')
Insert #Test(NumVal) Values('11')

Select NumVal
From #Test
Order By Case
    When IsNumeric(NumVal) = 1 Then Right('0000000000' + NumVal + '0', 10)
    Else Right('0000000000' + NumVal, 10)
    End

Results:
1a
1b
02
03
10
11

मेरे समाधान के बारे में एक नोट। यदि यह मामला है कि वर्णमाला वर्णों का विशेष अर्थ है, तो जैसा कि एरिक रॉबर्टसन ने सुझाव दिया था, आपको डेटा को अलग-अलग कॉलम में तोड़ देना चाहिए। उपरोक्त समाधान केवल दो बहुत ही विशिष्ट मामलों को संभालेगा:एक सभी संख्यात्मक मान, एक एकल अनुगामी वर्ण के साथ एक मान। यदि डेटा में कई अक्षर वर्ण हो सकते हैं या वर्णानुक्रम वर्ण कभी-कभी मान के अंत के अलावा अन्य स्थान पर होता है, तो मेरा समाधान काम नहीं करेगा। इसके अलावा, यह ध्यान दिया जाना चाहिए कि मेरा समाधान प्रत्येक मान पर ऑर्डर-सक्षम स्ट्रिंग का मूल्यांकन करने के लिए टेबल स्कैन का कारण बन जाएगा।

यदि आप जो चाहते हैं वह एकमुश्त त्वरित समाधान है, तो मेरा दृष्टिकोण काम करेगा। यदि आप एक दीर्घकालिक समाधान की तलाश कर रहे हैं, तो या तो डेटा को अलग-अलग कॉलम में विभाजित करें, नासमझ सॉर्ट ऑर्डर स्वीकार करें या एक कॉलम जोड़ें जो प्रत्येक मान के लिए सापेक्ष सॉर्ट ऑर्डर को निर्देशित करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. किसी चयनित क्वेरी के अंदर संग्रहीत कार्यविधि को कैसे निष्पादित करें

  2. SQL सर्वर 2008 ट्रिगर

  3. SQL सर्वर में @@ SERVERNAME के ​​साथ स्थानीय सर्वर नाम लौटाएं

  4. SQL सर्वर तालिका में परिवर्तनों की जाँच करें?

  5. मैं तालिका में डुप्लिकेट पंक्तियों को कैसे हटा सकता हूं