मेरे डेटाबेस में, मेरे पास एक कॉलम है जिसमें या तो केवल संख्याएं हो सकती हैं, या टेक्स्ट (जिसमें संख्याएं भी हो सकती हैं)। char कॉलम के लिए, SQL सर्वर वैल्यू को कैरेक्टर कोड (1, 12, 14, 2, 20, 200, 3, 30, ...) के अनुसार सॉर्ट करता है।

मुझे अपना .OrderBy विवरण कैसे लिखना होगा ताकि उन्हें अंकों की तरह क्रमबद्ध किया जा सके, जबकि वे सांख्यिक हैं?

0
André Reichelt 6 सितंबर 2019, 12:30

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप DB ( आवेदन पर नहीं ) पर छाँटना चाहते हैं, तो

अपने कॉलम के पूर्णांक भाग को निकालने के लिए patindex() और substring() फ़ंक्शंस का उपयोग करें (शून्य मामलों को शून्य मानते हुए), और फिर पूर्णांक के रूप में कास्ट करें:

Order By cast( coalesce(
                substring(yourCol, patindex('%[0-9]%', yourCol), 
                   patindex('%[0-9][^0-9]%', yourCol + 't') 
                   - patindex('%[0-9]%', yourCol) + 1)

               ,0)  as int )

आपके चयन कथन के भीतर।

डेमो

1
Barbaros Özhan 6 सितंबर 2019, 09:59