Esegui funzioni di stringa nel tuo ORDER BY
per rimuovere solo il numero. Qualcosa del genere dovrebbe funzionare:
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)
Questo rimuoverà prima IS-
e controlla se il resto della stringa è un numero. Se lo è, lascerà le cifre decimali, altrimenti rimuoverà il .
e i seguenti caratteri alfabetici.
Ciò presuppone che l'ordine previsto nel caso di cifre decimali sia:
IS-123.A
IS-123.1
IS-123.2
Se non ti interessa cosa c'è dopo il decimale/punto, allora semplicemente:
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)