select
*
from
table
order by
CASE
WHEN not column like '%[^0-9]%' THEN CONVERT(int,column)
WHEN column like '[0-9]%' THEN CONVERT(int,SUBSTRING(column,1,PATINDEX('%[A-Z]%',column)-1))
END,
CASE
WHEN not column like '%[^0-9]%' THEN NULL
WHEN column like '[0-9]%' THEN SUBSTRING(column,PATINDEX('%[A-Z]%',column),9000)
ELSE column
END