sql >> Databáze >  >> RDS >> Sqlserver

Složitý druh pole řetězec - číslo - řetězec

Toto řešení je spolehlivější než zvolená odpověď. Tato odpověď nemusí poskytnout očekávanou odpověď, pokud je ve stanici více než 1 číslo jako „EPA WELL 5 7“. Toto řešení doplní číslo '0', takže porovnání bude uvažovat všechna osmimístná čísla.

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

*Odpověď GoatCD nedává správné pořadí v mých testovacích datech.



  1. Vygenerujte hash řetězec MD5 pomocí T-SQL

  2. Vkládání textu a speciálních znaků a MySQL

  3. Použití velkých parametrů pro uloženou proceduru Microsoft SQL s DAO

  4. MySQL nastavuje aktuální datum v poli DATETIME na vložení