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

फ़ील्ड स्ट्रिंग का जटिल प्रकार - संख्या - स्ट्रिंग

यह समाधान चुने हुए उत्तर की तुलना में अधिक विश्वसनीय है। यदि स्टेशन में 'EPA WELL 5 7' जैसी 1 से अधिक संख्याएँ हैं, तो यह उत्तर अपेक्षित उत्तर नहीं दे सकता है। यह समाधान संख्या को '0' से जोड़ रहा है इसलिए तुलना सभी संख्याओं को 8 अंकों पर विचार करेगी।

DECLARE  @Table1 table([station] varchar(26))

INSERT INTO @Table1
    ([station])
VALUES
    ('ANTIL WELL 2'),
    ('ANTIL WELL 1'),
    ('BASELINE & CALIFORNIA WELL'),
    ('EPA WELL 7'),
    ('EPA WELL 6'),
    ('EPA WELL 108'),
    ('EPA WELL 109'),
    ('EPA WELL 110'),
    ('EPA WELL 111'),
    ('EPA WELL 112'),
    ('EPA WELL 108S'),
    ('EPA WELL 111108')
;

SELECT station
FROM @table1
ORDER BY 
CASE WHEN station not like '%[0-9]%' THEN station ELSE
   STUFF(station, PATINDEX('%[0-9]%',station), 0, replicate('0', 
   PATINDEX('%[0-9]%',station) - len(station) + PATINDEX('%[0-9]%',reverse(station)) + 6))
END

*GoatCD का उत्तर मेरे परीक्षण डेटा में सही क्रम नहीं देगा।



  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) IN के लिए SP को ArrayList या स्ट्रिंग पास करें ()

  3. SQL सर्वर सिमेंटिक सर्च के साथ विंडोज फाइल सिस्टम पर दस्तावेजों को स्टोर और विश्लेषण करना सीखें - भाग 1

  4. सी # एसक्यूएलकनेक्शन पूलिंग

  5. एसक्यूएल के बीच समावेशी नहीं