SELECT Price, Contact,Number, GameType, ServerName, Account,Password, Rank, RentDate, Legends, Detail, IsRent, Id
FROM dbo.AccountInfo
ORDER BY UPPER(LEFT(Number, patindex('%[^a-z]%',Number)-1)) ASC, Convert(int, RIGHT(Number,LEN(Number)- patindex('%[^a-z]%',Number)+1)) ASC, Number ASC
Mysql版本
SELECT Number
FROM accountinfo
ORDER BY
CASE WHEN Number REGEXP '^[A-Z]{2}'
THEN 1
ELSE 0
END ASC,
CASE WHEN Number REGEXP '^[A-Z]{2}'
THEN LEFT(Number, 2)
ELSE LEFT(Number, 1)
END ASC,
CASE WHEN Number REGEXP '^[A-Z]{2}'
THEN CAST(RIGHT(Number, LENGTH(Number) - 2) AS SIGNED)
ELSE CAST(RIGHT(Number, LENGTH(Number) - 1) AS SIGNED)
END ASC
postgresql版本
SELECT *, (regexp_matches(Number, '[A-Z]+' ))[1], (regexp_matches(Number, '[0-9]+' ))[1] from aaa
ORDER BY (regexp_matches(Number, '[A-Z]+' ))[1] ASC ,
to_number((regexp_matches(Number, '[0-9]+' ))[1], '999999') ASC