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

SQL सर्वर 2008 - संख्या के साथ तार द्वारा क्रम संख्यात्मक रूप से

आप इसे नीचे दिए गए PATINDEX() फ़ंक्शन का उपयोग करके कर सकते हैं:

select * from Test 
order by CAST(SUBSTRING(Name + '0', PATINDEX('%[0-9]%', Name + '0'), LEN(Name + '0')) AS INT)

एसक्यूएल फिडल डेमो

यदि आपके पास स्ट्रिंग के बीच में संख्याएं हैं तो आपको स्ट्रिंग से संख्या प्राप्त करने के लिए छोटे उपयोगकर्ता परिभाषित फ़ंक्शन बनाने की आवश्यकता है और नीचे दिए गए नंबर के आधार पर डेटा सॉर्ट करें:

CREATE FUNCTION dbo.fnGetNumberFromString (@strInput VARCHAR(255)) 
RETURNS VARCHAR(255) 
AS 
BEGIN 
    DECLARE @intNumber int 
    SET @intNumber = PATINDEX('%[^0-9]%', @strInput)

    WHILE @intNumber > 0
    BEGIN 
        SET @strInput = STUFF(@strInput, @intNumber, 1, '')
        SET @intNumber = PATINDEX('%[^0-9]%', @strInput)
    END 

    RETURN ISNULL(@strInput,0) 
END 
GO

आप डेटा को इसके अनुसार क्रमित कर सकते हैं:

select Name from Test order by dbo.fnGetNumberFromString(Name), Name


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शुरुआती लोगों के लिए SQL सर्वर 2016 में पूर्ण-पाठ खोज लागू करना

  2. यादृच्छिक तिथि के साथ पंक्तियों को कैसे अपडेट करें

  3. SQL सर्वर:DELETE बनाम TRUNCATE

  4. SQL सर्वर में दिनांक प्रारूप को DD/MMM/YYYY प्रारूप में कनवर्ट करें

  5. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'smalldatetime' में बदलें