Faites des fonctions de chaîne dans votre ORDER BY
pour supprimer uniquement le numéro. Quelque chose comme ceci devrait fonctionner :
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)
Cela supprimera d'abord le IS-
et vérifiez si le reste de la chaîne est un nombre. Si c'est le cas, il laissera les chiffres décimaux, sinon il supprimera le .
et les caractères alpha suivants.
Cela suppose que votre ordre prévu dans le cas de décimales numériques serait :
IS-123.A
IS-123.1
IS-123.2
Si vous ne vous souciez pas de ce qu'il y a après la virgule/le point, alors simplement :
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)