Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Сложен вид поле низ - число - низ

Това решение е по-надеждно от избрания отговор. Този отговор може да не даде очаквания отговор, ако в станцията има повече от 1 номер като „EPA WELL 5 7“. Това решение допълва числото с '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. Таблици със списък на SQL Server:Как да покажа всички таблици

  2. Включете липсващите месеци в заявката за група по

  3. Съвместимост на Sql сървър Integration Services 2008-2005

  4. 2 начина за връщане на списък със свързани сървъри в SQL Server с помощта на T-SQL

  5. SQL Server Compact Edition ISNULL(sth, ' ') връща булева стойност?