Proveďte řetězcové funkce v ORDER BY
odstranit pouze číslo. Něco takového by mělo fungovat:
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)
Tím se nejprve odstraní IS-
a zkontrolujte, zda zbytek řetězce je číslo. Pokud je, ponechá desetinné číslice, jinak odstraní .
a následující alfa znaky.
To za předpokladu, že zamýšlené pořadí v případě číselných desetinných míst by bylo:
IS-123.A
IS-123.1
IS-123.2
Pokud vás nezajímá, co je za desetinnou tečkou/tečkou, pak jednoduše:
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)