Если всегда есть один и тот же формат (file # .....)
, есть простое решение:
order by charindex(')', col), col
Edit:
Извлекает первую группу цифр и преобразует ее в INT
.
ORDER BY
CAST(CASE WHEN PATINDEX('%[0-9]%',col) > 0
THEN SUBSTRING(SUBSTRING(col,PATINDEX('%[0-9]%',col),100), 1, PATINDEX('%[^0-9]%', SUBSTRING(col,PATINDEX('%[0-9]%',col),100)+'#')-1)
ELSE '0'
END AS FLOAT)
,col
Было бы намного проще, если бы SQL Server поддерживал регулярные выражения: -)