Voer tekenreeksfuncties uit in uw ORDER BY
om alleen het nummer te verwijderen. Iets als dit zou moeten werken:
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)
Hiermee wordt eerst de IS-
. verwijderd en controleer of de rest van de string een getal is. Als dat zo is, blijven de decimale cijfers staan, anders wordt de .
en de volgende alfatekens.
Dit veronderstelt dat uw beoogde volgorde in het geval van numerieke decimalen zou zijn:
IS-123.A
IS-123.1
IS-123.2
Als het je niet uitmaakt wat er achter de komma/punt staat, doe dan gewoon:
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)