Führen Sie Zeichenfolgenfunktionen in Ihrem ORDER BY
aus um nur die Nummer zu entfernen. So etwas sollte funktionieren:
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)
Dadurch wird zuerst IS-
entfernt und prüfen Sie, ob der Rest der Zeichenfolge eine Zahl ist. Wenn dies der Fall ist, werden die Dezimalstellen beibehalten, andernfalls wird .
entfernt und die folgenden Alphazeichen.
Dies setzt voraus, dass Ihre beabsichtigte Reihenfolge im Fall von numerischen Dezimalstellen wie folgt lautet:
IS-123.A
IS-123.1
IS-123.2
Wenn Sie sich nicht darum kümmern, was nach dem Dezimalpunkt/Punkt steht, dann einfach:
ORDER BY CAST(LEFT(SUBSTRING(col,4,20),CHARINDEX('.',SUBSTRING(col,4,20),0)-1) AS NUMERIC)