Udfør strengfunktioner i din ORDER BY
for kun at fjerne nummeret. Noget som dette burde virke:
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)
Dette vil først fjerne IS-
og tjek om resten af strengen er et tal. Hvis den er, vil den efterlade decimalcifrene, ellers vil den fjerne .
og følgende alfategn.
Dette antager, at din påtænkte bestilling i tilfælde af numeriske decimaler ville være:
IS-123.A
IS-123.1
IS-123.2
Hvis du er ligeglad med, hvad der står efter decimalen/punktum, så skal du blot:
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)