Faça funções de string em seu
ORDER BY
para remover apenas o número. Algo assim deve funcionar:SELECT col
FROM table
ORDER BY CAST(CASE WHEN ISNUMERIC(SUBSTRING(col,4,20)) = 1
THEN SUBSTRING(col,4,20)
ELSE LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1)
END AS NUMERIC)
Isso primeiro removerá o
IS-
e verifique se o resto da string é um número. Se estiver, deixará os dígitos decimais, caso contrário, removerá o .
e os seguintes caracteres alfa. Isso está assumindo que sua ordenação pretendida no caso de casas decimais numéricas seria:
IS-123.A
IS-123.1
IS-123.2
Se você não se importa com o que está depois do decimal/período, simplesmente:
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)